安卓端double取小数点后2位4种方法(都有bug)

private void md1(double s) {
    BigDecimal bg = new BigDecimal(s);
    double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    Log.e("f1", "f1=" + f1);
}

private void md2(double s) {
    DecimalFormat df = new DecimalFormat("#.00");
    Log.e("df", "df=" + df.format(s));
}

private void md3(double s) {
    Log.e("ef", "ef=" + String.format("%.2f", s));
}

private void md4(double s) {
    NumberFormat nf = NumberFormat.getNumberInstance();
    nf.setMaximumFractionDigits(2);
    Log.e("nf", "nf=" + nf.format(s));
}

测试中发现问题:比如2.165中,6是偶数,那么md1的值为2.17正常,其他3个方法为2.16;再者2.175,7是奇数,那么md1的值为2.17不正常,其他3个方法为2.18正常。还有输入0.5或0.几的时候md2为.50,少了个0,。

还望哪个大神来个正确的方法,谢谢!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值