C# 中的计算不正确
Incorrect calculation in C#
为什么在 C#
中使用 (0.406 * 10000.0)
returns 4060.0000000000005
而不是 4060.0
我写了一个函数来检查没有。 double 值中的小数位数及以下是我正在使用的代码。当 d is 0.406
的值和 n is 4
的值以及函数 returns true
而不是 false
时,就会出现上面句子中描述的问题
我愿意使用替代解决方案。
public static bool HasMoreThanNDecimals(double d, int n)
{
return !(d * (double)Math.Pow(10, n) % 1 == 0);
}
只需使用 decimal 类型而不是 double 类型以获得更精确的结果。
为什么在 C#
中使用(0.406 * 10000.0)
returns 4060.0000000000005
而不是 4060.0
我写了一个函数来检查没有。 double 值中的小数位数及以下是我正在使用的代码。当 d is 0.406
的值和 n is 4
的值以及函数 returns true
而不是 false
我愿意使用替代解决方案。
public static bool HasMoreThanNDecimals(double d, int n)
{
return !(d * (double)Math.Pow(10, n) % 1 == 0);
}
只需使用 decimal 类型而不是 double 类型以获得更精确的结果。