什么RoundingMode常量100%像Math.round一样工作?

时间:2018-03-23 10:53:45

标签: java rounding

我的意思是有没有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完全相同。

1 个答案:

答案 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(),但它并不存在。