关于C# math的用法

最近在用.net写朴素贝叶斯算法时,发现所有关于Math的函数参数值类型都为double,这样在进行浮点运算时精度无法得到保证。需要转为decimal。总结方法如下:
<span style="font-size:14px;">for(int j=0;j<featuresinput.Count;j++)
            {
                decimal Gaosi;
                if (CalFeatureVar[j] == 0.0)
                {
                    Gaosi = 1.0m;
                    CP.Add(Gaosi);
                }
                else
                {
                    Gaosi = Convert.ToDecimal(Math.Log((1.0 / Math.Sqrt(2.0 * Math.PI * CalFeatureVar[j])))) + Convert.ToDecimal(-(1.0 / 2.0 * Math.Pow((featuresinput[j] - CalFeatureAvr[j]), 2.0)/ CalFeatureVar[j]));//math.exp小心为1和为0的情况
                    CP.Add(Gaosi);
                }
            }</span>


附:math类用法

Math 方法:

  • Acos:返回余弦值为指定数字的角度。
  • Asin:返回正弦值为指定数字的角度。
  • Atan:返回正切值为指定数字的角度。
  • Atan2:返回正切值为两个指定数字的商的角度。
  • Cos:返回指定角度的余弦值。
  • Sin:返回指定角度的正弦值。
  • Tan:返回指定角度的正切值。
  • Abs:返回指定数字的绝对值。
  • Ceiling:返回大于或等于指定数字的最小整数。
  • Floor:返回小于或等于指定数字的最大整数。
  • Round:将值舍入到接近的整数或指定的小数位数
    • Round(Double):四舍五入。
    • Round(Double, Int32):四舍五入,小数位数。
    • Round(Double, MidpointRounding)
    • Round(Double, Int32, MidpointRounding)
    • MidpointRounding.ToEven:舍入最接近的偶数。   2.5 → 2
    • MidpointRounding.AwayFromZero:舍入绝对值较大的值。   2.5 → 3
  • Exp:返回e的指定次幂。
  • Pow:返回指定数字的指定次幂。
  • Log10:返回指定数字以10为低的对数。
  • Log:返回指定数字的对数。
    • Log(Double):返回指定数字的自然对数(底为e)。
    • Log(Double, Double):返回指定数字在使用指定底数时的对数。
    • Log(1000, 10) = 3    底数写在后面。
  • Max:返回两个指定数字中较大的一个。
  • Min:返回两个指定数字中较小的一个。
  • Sqrt:返回指定数字的平方根。
  • Truncate:计算一个数字的整数部分。

 Math 字段:

  • E:表示自然对数的底,它由常数e指定。
  • PI:表示圆的周长与其直径的比值。
官方文档

你可能感兴趣的:(.net,C#)