java中浮点数的比较
首先来看两个简单的例子:
例一:
float f = 0.1f;
double d = 0.1;
System.out.println(f==d);
结果为:false
例二:
float n = 131213112f;
float m = n+1;
System.out.println(n==m);
结果为:true
float和double类型主要是为了科学计算和工程计算而设计的。它们执行二进制浮点运算,这是为了在广泛的数字范围上提供较为精确的快速近似计算而精心设计的。然而,它们并没有提供完全精确的结果。因此,我们不应该应用于精确计算的场合。例如银行业务等。
可以使用BigDecimal类型进行加减乘除运算
Java BigDecimal类型的 加减乘除运算不能基本数据类型一样样,需要调用方法:
加法:add
减法:subtract
乘法:multiply
除法:divide
但能实现非常精准的结果。
例如:
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.1");
BigDecimal s = null;
s = a.subtract(b);
System.out.println("a-b="+s);