Java中double保留2位小数(精度丢失)的两种方式

在Java开发中,使用double进行计算时可能会遇到精度丢失的问题。本文介绍了两种处理方法:一是使用Math.round函数进行四舍五入,二是利用DecimalFormat格式化输出。这两种方式可以有效解决大部分精度需求,其中Math.round更灵活,而DecimalFormat能直接获得字符串结果。

在我们日常开发中,使用double数据类型进行计算,偶尔会出现精度丢失的情况,例如实际结果是0.75,就可能出现0.7500000000000001或0.7499999999999999。这边介绍两种方式(四舍五入)保留2位小数,可以满足开发中处理double精度丢失的大部分需求。

方式一:使用round函数(同理:保留4位的话就是10000)

		Double d = 3.141592653589;
        double d1 = (double) Math.round(d * 100) / 100;
        System.out.println(d1); //3.14

方式二:使用DecimalFormat函数(这个的返回值是String)

		Double d = 3.141592653589;
		DecimalFormat df = new DecimalFormat("######0.00");
        String s = df.format(d);
        double d2 = Double.valueOf(s);
        System.out.println(s); //"3.14"
        System.out.println(d2); //3.14

总结:可以按照自己的需求选择任意方式,方式一更灵活点,方式二可以直接得到字符串类型的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值