我的意思是有没有RoundingMode常量描述Math.round(arg)
的确切含义?我知道Math.round没有正式使用任何RoundingMode类/对象。
到目前为止,我没有发现类比。有一个部分类比 - 在像1.5,-1,5这样的情况下,就像在RoundingMode.CEILING
("朝向正无穷大" )。但是RoundingMode.CEILING
类比不适用于其他论点(1.7,-1.1),因此它不能100%类比。
所以我发现在所有RoundingMode常量中绝对没有100%类比,这让我觉得我在某处不专心。 RoundingMode类中的常量列表应具有所有广泛使用的舍入模式的常量,对吧?
那么为什么RoundingMode类中没有100%类比?
这是RoundingMode类常量的comparison table及其行为。
P.S。 Math.floor(arg)
方法的行为与RoundingMode.FLOOR
完全相同,Math.ceil(arg)
的行为与RoundingMode.CEILING
完全相同。
答案 0 :(得分:2)
Math.round()
的工作方式类似于RoundingMode.HALF_UP
,而负数则类似RoundingMode.HALF_DOWN
。
原因是Math.round()
围绕正无穷大并且没有模式可以做到这一点。
为了澄清,两种模式的工作方式与round()
完全相同,除了关系(例如xxx.5
之类的数字),例如5.5和-5.5,它们将舍入到5和-5用于{{ 1 {}},6和-6代表HALF_DOWN
,但-5和6代表HALF_UP
。
您正在寻找的是round()
,但它并不存在。