作者: RaphetS
第一种方法
使用DecimalFormat类
例如,如果需要保留两位小数,可以这样写
decimal format df=new decimal format (' 0.00 ); 测试如下。
双精度d=0.200; decimal format df=new decimal format (' 0.00 ); 系统. out.println (df.format (d ) ); 输出结果如下。
0.20
双精度d=0.000时; 输出结果为0.00;
双精度d=0时; 输出结果为0.00;
双精度d=41.2345时; 输出结果为41.23;
测试结果表明,无论双精度d的值是多少,最终结果都是正常的两位小数。
同样,如果保留小数decimal format df=新decimal format (' 0.0 ) ); 其他就此类推
若是这种写法DecimalFormat df = new DecimalFormat("0.00"),不管传入的任何值,均保留两位小数
另一种写法是:
双精度d=41.123; decimal format df=new decimal format (' #.# # '; 系统. out.println (df.format (d ) ); 输出结果如下。
41.12
双精度d=2.00时,输出结果为2;
双精度d=41.001时,输出结果为41;
双精度d=41.010时,输出结果为41.01;
双精度d=0时,输出结果为0;
双精度d=0.200时,输出结果为0.2;
总结:若是这种写法DecimalFormat df = new DecimalFormat("#.##"),则保留小数点后面不为0的两位小数,这种写法不能保证保留2为小数,但能保证最后一位数不为0;
第二种方法
测试:
双精度d=0.6544; strings=string.format('%.2f ',d ); 系统. out.println (s; 输出结果如下。
0.65
双精度d=0.6566时,输出结果为0.66;
双精度d=0时,输出结果为0.00;
其中String s=String.format("%.2f",d)表示小数点后任意两位小数,其中2为表示两位小数,若需要三位小数,把2改为3即可,其他同理。
总结:这种方法不管传入的值是多少,均保留两位小数,并且符合四舍五入的规则。
第三种方法:
使用BigDecimal类
测试:
输入结果:1.0
双精度d=0时,输出结果为0.0;
双精度d=1.999时,输出结果为2.0;
双精度1.89时,输出结果为1.89;
总结:使用这种写法若小数点后均为零,则保留一位小数,并且有四舍五入的规则。
源代码
以下是Java测试类