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);

你可能感兴趣的:(java,格式化)