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,。
还望哪个大神来个正确的方法,谢谢!