java中怎么保留几位小数(关于Java小数点位数保留的解决方案)
java中怎么保留几位小数(关于Java小数点位数保留的解决方案)经测试,不管double d的值为多少,最后结果都是正常的两位小数。若double d=0.000;输出结果为0.00;若double d=0;输出结果为0.00;若double d=41.2345;输出结果为41.23;举个例子,假如我们需要保留两位小数,我们可以这样写DecimalFormat df = new DecimalFormat("0.00"); 测试如下:double d = 0.200; DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(d)); 输出结果为:0.20
作者:RaphetS
来源:www.jianshu.com/p/00fff555986b
第一种方法
使用DecimalFormat类
举个例子,假如我们需要保留两位小数,我们可以这样写
DecimalFormat df = new DecimalFormat("0.00");
测试如下:
double d = 0.200; DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(d));
输出结果为:
0.20
若double d=0.000;输出结果为0.00;
若double d=0;输出结果为0.00;
若double d=41.2345;输出结果为41.23;
经测试,不管double d的值为多少,最后结果都是正常的两位小数。
同理若是保留一位小数DecimalFormat df = new DecimalFormat("0.0");其他以此类推
若是这种写法DecimalFormat df = new DecimalFormat("0.00"),不管传入的任何值,均保留两位小数
还有一种写法是这样:
double d = 41.123; DecimalFormat df = new DecimalFormat("#.##"); System.out.println(df.format(d));
输出结果为:
41.12
若double d=2.00,输出结果为2;
若double d=41.001,输出结果为41;
若double d=41.010,输出结果为41.01;
若double d=0,输出结果为0;
若double d=0.200,输出结果为0.2;
总结:若是这种写法DecimalFormat df = new DecimalFormat("#.##"),则保留小数点后面不为0的两位小数,这种写法不能保证保留2为小数,但能保证最后一位数不为0;
第二种方法
测试:
double d = 0.6544; String s=String.format("%.2f" d); System.out.println(s);
输出结果为:
0.65
若double d=0.6566,输出结果为0.66;
若double d=0,输出结果为0.00;
其中String s=String.format("%.2f" d)表示小数点后任意两位小数,其中2为表示两位小数,若需要三位小数,把2改为3即可,其他同理。
总结:这种方法不管传入的值是多少,均保留两位小数,并且符合四舍五入的规则。
第三种方法:
使用BigDecimal类
测试:
输入结果:1.0
若double d=0,输出结果为0.0;
若double d=1.999,输出结果为2.0;
若double d=1.89,输出结果为1.89;
总结:使用这种写法若小数点后均为零,则保留一位小数,并且有四舍五入的规则。
源码
以下为Java测试类