java 四舍五入的问题--五舍六入


Double dd=0.125;
try {
DecimalFormat df=new DecimalFormat("#.##");
System.out.println(df.format(dd));
} catch (RuntimeException e) {
e.printStackTrace();
}

MathContext v = new MathContext(2,RoundingMode.HALF_DOWN);
BigDecimal a = new BigDecimal("0.875",v);
System.out.println(a);

float a1 = 123.2354f;
float b = (float)(Math.round(a1*100))/100;
System.out.println(b);


float ft = 134.3445f;
int scale = 2;//设置位数
int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等.
BigDecimal bd = new BigDecimal((double)ft);
bd = bd.setScale(scale,roundingMode);
ft = bd.floatValue();
System.out.println(ft);


结果为:
0.12
0.87
123.24
134.34

结论:
只有第3,4 种方法实现了真正的四舍五入, 1,2种方法到是“五舍六入”
至于为什么会这样?java是有解释的,可以查查看,匆忙写下这边就不在解释了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值