我一直在与来自 SQL Decimal (38,30) 的 C# 中的小数精度作斗争,我终于把它一直做到了四舍五入。我知道我可能在这里忽略了显而易见的事情,但我需要一点洞察力。
我遇到的问题是 C# 没有产生我认为是一致的输出。
decimal a = 0.387518769125m;
decimal b = 0.3875187691250002636113061835m;
Console.WriteLine(Math.Round(a, 11));
Console.WriteLine(Math.Round(b, 11));
Console.WriteLine(Math.Round(a, 11) == Math.Round(b, 11));
产量
0.38751876912
0.38751876913
False
呃,0.38751876913?真的吗?我在这里想念什么?
来自MSDN:
如果小数位为奇数,则改为偶数。否则,它保持不变。
为什么我看到不一致的结果?额外的精度不会改变“小数位中的数字”......