java中处理数据精度丢失

大家都知道Java中在计算一些小数的时候会出现精度丢失。在这里给出两种方法来解决这个问题

  1. 利用小数的格式化DecimalFormat
   DecimalFormat df = new DecimalFormat("#.000");//保留3位小数
           double a = 2.0;
           double b = a - 0.111*5;
           System.out.println(df.format(b));
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。

2.把两个数同时扩大相同倍数化为整数,计算出结果后再除以适当的倍数

double a = 2.0;
        double b = a - 0.111 * 5;
        a = 2.0 * 1000;
        b = a - 0.111 * 5 * 1000;
        b = b/1000*1.0;
        System.out.println(b);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值