【发布时间】:2011-02-12 11:11:37
【问题描述】:
我注意到 .NET 在小数和尾随零方面有一些古怪/不直观的行为。
0m == 0.000m //true
0.1m == 0.1000m //true
但是
(0m).ToString() == (0.000m).ToString() //false
(0.1m).ToString() == (0.1000m).ToString() //false
我知道遵守 ECMA CLI 标准的必要性。 但是我想知道是否有内置方法可以在不通过字符串表示的情况下截断十进制值的尾随零(.ToString("G29") 和解析返回技巧会起作用,但既不是快速也不是优雅的解决方案) ?
有什么想法吗? 非常感谢。
【问题讨论】:
-
嗯...我在想一些涉及
decimal.GetBits和 96 位算术的东西,但并不简单。 -
请参阅stackoverflow.com/questions/1584314 了解相关问题。那里的答案之一给出了除以 1.000....0000m 以有效去除尾随零的技巧(大概是因为商 x/y 的“理想”指数是 x 和 y 的指数之差)。令人惊讶的是,没有
normalize方法。