c#数学函数不计算
本文关键字:计算 函数 | 更新日期: 2023-09-27 18:19:41
我有一个简单的数学函数
private int Doyle(LogArguments args)
{
return Convert.ToInt32(Math.Round(Math.Pow((args.Diameter - 4) , 2.0) * (args.Length / 16),0));
}
它应该总是返回int>0,但我的问题是如果args.Length
<=16位CCD_ 2=0。我试过:
decimal d = args.length/16
和double d = args.length/16;
当长度<16
如果args.length
是int
,则不管输出变量的类型是什么,都要进行整数除法。要强制进行decimal
除法,最简单的方法是在分母中指定一个十进制文字:
decimal d = args.length / 16M;
或者对于double
,使用浮点文字:
double d = args.length / 16.0;
double d = args.length/16;
当长度<16
这是因为args。Length和16都是整数。得到整数除法(结果0),即,然后转换为双精度。相反,尝试
double d = args.length/16.0;
如果您试图乘以一个浮点值,例如:
5 / 16 = 0.3125
然后你应该把(args.Length / 16)
变成(args.Length / 16f)
。
这将迫使除法作为浮点进行,并保留任何余数。如果不添加f
,它将作为截断余数的整数除法进行,因此任何小于16的值都将小于1,并减为0。