舍入到4位小数 - 意外结果

时间:2017-01-30 14:52:16

标签: c# .net rounding

四舍五入时,我得到以下输出:

Math.Round(2.3234503,4) = 2.3235

Math.Round(2.323450,4) = 2.3234

我看不出这有多大意义,有人能指出我吗?我预计两次都会得到2.3235的回答。最后一个小数位的数字3或缺少怎么会影响结果呢?

1 个答案:

答案 0 :(得分:1)

来自MSDN

返回:

  

数字最近到d,其中包含多个小数位数   等于小数。

关键词最近。

2.3234 503 - 离503最近是5,所以舍入到5

2.3234 50 - 是中途。

距离MSDN

的一半
  

在中点值中,最低有效数字后面的值   结果恰好是两个数字之间的一半。例如,   3.47500是中点值,如果要舍入两位小数,则7.500是中点值,如果要舍入为整数。在   这些情况下,没有a就不能轻易识别出最近的值   四舍五入。 Round方法支持两个舍入   处理中点值的约定:

     

圆满结束

     

中点值四舍五入到远离零的下一个数字。对于   例如,3.75轮到3.8,3.85轮到3.9,-3.75轮到-3.8,   和-3.85回合到-3.9。这种舍入形式由   MidpointRounding.AwayFromZero枚举成员。离开   零是最广为人知的舍入形式。

     

四舍五入到最近,或银行家的四舍五入

     

中点值四舍五入到最接近的偶数   数。例如,3.75和3.85都是3.8到3.8,并且都是-3.75   和-3.85回合到-3.8。这种舍入形式由   MidpointRounding.ToEven枚举成员。舍入到最近的是   用于财务和统计的标准舍入形式   操作。它符合IEEE标准754第4节   多次舍入操作,它减少了舍入误差   通过在单个方向上始终舍入中点值而导致的。   在某些情况下,这种舍入误差可能很大。

     

默认情况下,Round方法使用舍入到最近的约定。