【问题标题】:Precision of C# decimal type division is different on Mono?Mono上C#十进制类型除法的精度不同?
【发布时间】:2025-11-25 15:25:02
【问题描述】:
decimal d1 = 4.0m;
decimal d2 = 40.0m;
decimal d = d1 / d2;
string repr = d.ToString();

在 Windows 上,repr 得到“0.1”。在 Mono(Xamarin Android)上,我得到“0.1000000000000000000000000000”左右。是什么赋予了?此外,我已经看到建议除以 1.0000000000000000000000000000m 以消除不需要的尾随零。这在 Xamarin Android 上也不起作用。

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

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

【问题讨论】:

  • 是的,这是known bug。它很旧,卷起袖子;)
  • 这对于十进制类型来说是相当令人震惊的。

标签: c# mono xamarin.android decimal


【解决方案1】:

也许值得一提的是,正如 Miguel de Icaza 所说,此错误已得到修复:https://bugzilla.novell.com/show_bug.cgi?id=655780#c2

【讨论】:

    最近更新 更多