C# 十进制类型除法的精度在 Mono 上是不同的

本文关键字:Mono 是不同 精度 类型 除法 十进制 | 更新日期: 2023-09-27 18:26:58

decimal d1 = 4.0m;
decimal d2 = 40.0m;
decimal d = d1 / d2;
string repr = d.ToString();

在Windows上,我得到"0.1"的repr。在Mono(Xamarin Android(上,我得到"0.1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000什么给?此外,我看到了除以 1.000000000000000000000000000000m 的建议,以摆脱不需要的尾随零。这在Xamarin Android上也不起作用。

已知错误?或者从技术上讲不是错误 - 这是否符合标准?

为了摆脱零,我将值转换为字符串,从字符串中删除尾随零,然后将其转换回小数。它很弱。此外,我的解决方案没有产生我想要的确切结果。我宁愿留下适当重要的尾随零,而不是删除所有尾随零。

C# 十进制类型除法的精度在 Mono 上是不同的

也许值得注意的是,这个错误已经修复,正如Miguel de Icaza所说: https://bugzilla.novell.com/show_bug.cgi?id=655780#c2