我用过这个
Math.round(input * 100.0) / 100.0;
但这不符合我的要求。我想根据最接近的小数点值四舍五入到两个小数点。
首先我想检查第四个十进制值,如果是5或以上,我想把1加到第三个十进制值,然后我想检查第三个十进制值,如果是5或以上,我想把1加到第二个十进制值
例:如果我有22.3246
请参阅上面的示例编号。第四位小数是6。我们可以在小数点后三位加1。
结果:22.325
现在小数点后三位是5。我们可以把1加到第二个小数位
结果:22.33
我想得到结果22.33
3条答案
按热度按时间w46czmvw1#
如果您想尊重第四位小数,可以这样做:
bq8i3lrv2#
你可以用
BigDecimal
类来完成这个任务,结合规模和RoundingMode.HALF_UP
.示例代码:
输出:
8ulbf1ek3#
根据您的要求,最大的数字要四舍五入到
22.32
是22.3244444444...
. 从22.32444...4445
在上,每位数迭代舍入将导致22.33
.所以,你可以加上
0.005 - 0.0044444444
(标准舍入阈值减去您的阈值),即5/9000
然后转到下一个1/100
标准方式: