BigDecimal进行浮点数比较

BigDecimal进行浮点数比较

java.math包下面有两个有用的类:Biginteger和BigDecimal,这两个类可以处理任意长度的数值,BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

Demo:(使用BigDecimal进行浮点数比较)

import java.math.BigDecimal;
public class Main{
    public static void main(String[] args){
        BigDecimal bd = BigDecimal.valueOf(1.0);
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1)); 
        bd = bd.subtract(BigDecimal.valueOf(0.1));
     	bd = bd.subtract(BigDecimal.valueOf(0.1));
     	bd = bd.subtract(BigDecimal.valueOf(0.1));
        System.out.println(bd);//0.5
        System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1);//0.500000000000000001
    }
}

浮点数存在舍入误差,数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

避免比较中使用浮点数,需要比较请使用BigDecimal类。


版权声明:本文为qq_51788611原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。