为什么Java的RoundingMode HALF_UP在-2.5到-3之间?

时间:2012-12-21 19:06:05

标签: java rounding

RoundingMode允许程序员指定以什么方式舍入浮点数。这很好,但是有一件事我觉得很奇怪。也许我只是误解了学校的一些基本知识。

但是这种舍入模式被描述为我在学校教授的那种模式,“总是四舍五入到最接近的数字,当死在中心时,总是向上舍入。”,但为什么它绕-2.5到-3?

我总结道,它在绝对值方面都是四舍五入的,但对于我来说,-2肯定是从-2.5“上升”。

2 个答案:

答案 0 :(得分:6)

RoundingMode.UP是“远离零”的舍入模式。 RoundingMode.FLOOR朝向负无穷大,CEILING朝向正无穷大。当小数部分恰好为0.5时,HALF_UPUP一致。

他们必须选择某些术语来表示“远离零”。

答案 1 :(得分:3)

RoundingMode.HALF_UP的JavaDocs概述了基本原理。

  

舍入模式向"最近邻居"除非两个邻居都是等距的,在这种情况下会向上舍入。如果丢弃的分数> = 0.5,则表现为RoundingMode.UP;否则,表现为RoundingMode.DOWN。请注意,这是学校通常教授的舍入模式。

关于Rounding方法的Wikipedia文章提出了不同的主张:

  

例如,根据此规则,值23.5将四舍五入为24,但-23.5将四舍五入为-23。

     

这是美国小学数学课程中普遍教授的两条规则之一。

虽然已经要求引用。