我正在使用jdk1.8.0_45,我们的测试发现了路由中的错误。当决定四舍五入的最后一位小数为5时,RoundingMode.HALF_DOWN与RoundingMode.HALF_UP的作用相同。我发现了与RoundingMode.HALF_UP相关的问题,但它们已在更新40中得到修复。我还向oracle提出了一个错误,但根据我的经验,它们确实没有响应。packagetestjava8;importjava.math.RoundingMode;importjava.text.DecimalFormat;publicclassFormatori{publicstaticvoidmain
RoundingMode允许程序员指定float的舍入方式。这一切都很棒,但我发现其中有一件事很奇怪。也许我只是误解了学校的一些基本知识。但是这个舍入模式被描述为我在学校教的那个,“总是四舍五入到最接近的数字,当死在中心时,总是向上舍入。”,但为什么它会从-2.5舍入到-3?我的结论是,它根据绝对值四舍五入,但对我来说,-2肯定是-2.5的“向上”。 最佳答案 RoundingMode.UP是“远离零”的舍入模式。RoundingMode.FLOOR朝向负无穷大,CEILING朝向正无穷大。HALF_UP在小数部分恰好为0.5时与U
在我的代码中经过一系列计算后,我有一个BigDecimal值0.01954然后我需要将此BigDecimal乘以100并且我希望计算的值是1.95我不希望进行任何向上或向下舍入,我只想截断任何超过小数点后两位的值我尝试将比例设置为2,但后来我得到一个ArithmeticException说四舍五入是必要的。如何在不指定舍入的情况下设置比例? 最佳答案 使用RoundingMode.DOWN或RoundingMode.FLOOR.BigDecimalnewValue=myBigDecimal.setScale(2,RoundingMo
在我的代码中经过一系列计算后,我有一个BigDecimal值0.01954然后我需要将此BigDecimal乘以100并且我希望计算的值是1.95我不希望进行任何向上或向下舍入,我只想截断任何超过小数点后两位的值我尝试将比例设置为2,但后来我得到一个ArithmeticException说四舍五入是必要的。如何在不指定舍入的情况下设置比例? 最佳答案 使用RoundingMode.DOWN或RoundingMode.FLOOR.BigDecimalnewValue=myBigDecimal.setScale(2,RoundingMo
是否可以在Java中的枚举上使用==,还是需要使用.equals()?在我的测试中,==总是有效,但我不确定我是否能保证这一点。特别是,枚举上没有.clone()方法,所以我不知道是否有可能获得.equals()的枚举返回与==不同的值。例如,这样可以吗:publicintround(RoundingModeroundingMode){if(roundingMode==RoundingMode.HALF_UP){//dosomething}elseif(roundingMode==RoundingMode.HALF_EVEN){//dosomething}//etc}还是需要这样写:p
是否可以在Java中的枚举上使用==,还是需要使用.equals()?在我的测试中,==总是有效,但我不确定我是否能保证这一点。特别是,枚举上没有.clone()方法,所以我不知道是否有可能获得.equals()的枚举返回与==不同的值。例如,这样可以吗:publicintround(RoundingModeroundingMode){if(roundingMode==RoundingMode.HALF_UP){//dosomething}elseif(roundingMode==RoundingMode.HALF_EVEN){//dosomething}//etc}还是需要这样写:p