快捷搜索:  汽车  科技

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类

测试:

java中怎么保留几位小数(关于Java小数点位数保留的解决方案)(1)

输入结果:1.0

若double d=0,输出结果为0.0;
若double d=1.999,输出结果为2.0;
若double d=1.89,输出结果为1.89;

总结:使用这种写法若小数点后均为零,则保留一位小数,并且有四舍五入的规则。

源码

以下为Java测试类

java中怎么保留几位小数(关于Java小数点位数保留的解决方案)(2)

猜您喜欢: