四舍五入时,我得到以下输出:
Math.Round(2.3234503,4) = 2.3235
Math.Round(2.323450,4) = 2.3234
我看不出这有多大意义,有人能指出我吗?我预计两次都会得到2.3235的回答。最后一个小数位的数字3或缺少怎么会影响结果呢?
答案 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方法使用舍入到最近的约定。