0

为什么(0.406 * 10000.0)返回4060.0000000000005而不是4060.0在 C# 中

我写了一个检查否的函数。双精度值及以下的小数位数是我正在使用的代码。上面句子中描述的问题发生在 value ofd is 0.406和 values ofn is 4和函数返回true而不是false

我愿意使用替代解决方案。

public static bool HasMoreThanNDecimals(double d, int n)
{
    return !(d * (double)Math.Pow(10, n) % 1 == 0);
}
4

1 回答 1

2

只需使用小数类型而不是双精度即可获得所需的结果。

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

于 2017-05-04T09:20:01.380 回答