RoundingMode 允许程序员指定以何种方式舍入浮点数。这很棒,但我觉得有一点很奇怪。也许我只是误解了学校里一些基本的东西。
但是这种取整模式被描述为我在学校教的那种,“总是四舍五入到最接近的数字,当死在中心时,总是四舍五入。”但是为什么它会将-2.5四舍五入到-3?
我得出的结论是,它以绝对值四舍五入,但对我来说,-2 肯定是从 -2.5 “向上”。
RoundingMode.UP
是“远离零”的舍入模式。 RoundingMode.FLOOR
向负无穷大,CEILING
向正无穷大。 HALF_UP
与UP
小数部分正好为 0.5 时一致。
他们必须选择一些术语来表示“远离零”。
RoundingMode.HALF_UP的 JavaDocs 中概述了基本原理。
舍入模式向“最近的邻居”舍入,除非两个邻居是等距的,在这种情况下向上舍入。如果丢弃的分数 >= 0.5,则行为与 RoundingMode.UP 相同;否则,行为与 RoundingMode.DOWN 相同。请注意,这是学校通常教授的舍入模式。
关于舍入方法的维基百科文章提出了不同的主张:
例如,根据此规则,值 23.5 会四舍五入为 24,但 -23.5 会四舍五入为 -23。
这是美国小学数学课上普遍教授的两条规则之一。
尽管已要求引用。