标签:判断 sys 而在 big 不同的 拓展 rgs class double
public class FloatAndDouble {
public static void main(String[] args) {
float num1 = 0.1F;
double num2 = 1.0/10;
System.out.println(num1);
System.out.println(num2);
System.out.println(num1 == num2); //输出判断num1是否等于num2
}
}
// 0.1
// 0.1
// false
这段程序中看出相同数值的float和double被判断为不相等
另外,
public class FloatAndDouble {
public static void main(String[] args) {
float num1 = 1312341312314123123F;
double num2 = num1 + 1;
System.out.println(num1);
System.out.println(num2);
System.out.println(num1 == num2); //输出判断num1是否等于num2
}
}
// 1.31234134E18
// 1.31234134478553088E18
// true
而在这段程序中明显不同的num1和num2竟然被判断为相等。
那么,这是为什么呢?
因为float浮点数类型对小数的表达式有限、离散、近似的。因此,它的值有舍入误差,是一个大约的,接近真实数值却不等于真实值的值。
因此,最好完全避免使用浮点数进行比较。(比大小,判断是否相等)
在需要比较小数数值时,可以使用类BigDecimal (数学工具类)
标签:判断 sys 而在 big 不同的 拓展 rgs class double
原文地址:https://www.cnblogs.com/cutomorrowsmile/p/14413075.html