我一直在寻找MidpointRouding.ToEven是如何工作的。在.NET中,这似乎是默认的舍入方法。请检查我是否正确:
但是,对于第4条语句,我得到了1.1231而不是1.1230 (使用C#)。我想我一定弄错了。谁来解释一下为什么会发生这种事?谢谢!
发布于 2014-01-29 08:20:48
1.12305并不完全可以表示为double。最近的double略高于1.12305。
如果你尝试:
Math.Round(1.12305m, 4) = 1.1230它将转到1.1230,因为decimal可以精确地表示1.12305。
另见:关于浮点算法,每个计算机科学家应该知道什么?
https://stackoverflow.com/questions/21425441
复制相似问题