我已经搜索了中间的方式。似乎是.NET中的默认舍入方法。请检查我是否正确:
-
MATH.ROUND(A,B)与 Math.Round(a,b,midpointrounding.toeven)相同
- MATH.ROUND(1.5)= 2 和 MATH.ROUND(2.5)= 2
- MATH.ROUND(1.15,1)= 1.2 和 MATH.ROUND(1.25)= 2
- MATH.ROUND(1.12305,4)= 1.1230 ,与 Math.Round(1.12305,4,Midpointrounding.toeven.toeven.toeven)相同
但是,我得到 1.1231 ,而不是 1.1230 对于第4个语句(使用C#)。我想我必须弄错。有人帮助解释为什么会发生这种情况?谢谢!
1.12305
不能完全表示为 double
。最近的double
略高于1.12305
。
如果您尝试:
Math.Round(1.12305m, 4) = 1.1230
它将到1.1230
,因为decimal
S可以完全代表1.12305
。
另请参阅:每个计算机科学家应该了解有关浮点算术的知识