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

来源:互联网 发布:windows信息发布系统 编辑:程序博客网 时间:2024/05/19 06:50

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,。

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


阅读全文
0 0