.net Math.如何使用Midpointrouding.toeven工作



我已经搜索了中间的方式。似乎是.NET中的默认舍入方法。请检查我是否正确:

  1. MATH.ROUND(A,B) Math.Round(a,b,midpointrounding.toeven)相同
  2. MATH.ROUND(1.5)= 2 MATH.ROUND(2.5)= 2
  3. MATH.ROUND(1.15,1)= 1.2 MATH.ROUND(1.25)= 2
  4. 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

另请参阅:每个计算机科学家应该了解有关浮点算术的知识

最新更新