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 类型以获得更精确的结果。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/921a8ffc-9829-4145-bdc9-a96c1ec174a5/decimal-vs-double-difference?forum=csharpgeneral