Double vs Float - Java
问题描述:
那么我有以下程序。这是我的老师给的乐趣。我对结果感到惊讶。Double vs Float - Java
代码:
public class Testing {
public static void main(String[] args) {
float piF = 3.141592653589793f; // value assigned has float precision
double piD = 3.141592653589793; // value assigned has double precision
final double THRESHOLD = .0001;
if(piF == piD)
System.out.println("piF and piD are equal");
else
System.out.println("piF and piD are not equal");
if(Math.abs(piF - (float) piD) < THRESHOLD)
System.out.println("piF and piD are considered equal");
else
System.out.println("piF and piD are not equal");
}
}
结果:
piF and piD are not equal
piF and piD are considered equal
那么为什么PIF和PID不相等?而实际上Math.abs()
这样做是否使两者相同?
答
我在终端跑了这一点,那么添加PIF和PID值打印报表和这里的结果:
piF and piD are not equal
piF and piD are considered equal
piF = 3.1415927
piD = 3.141592653589793
当你做两者之间的直接比较,他们是不相等的。但是,当你施放PID号浮点类型,就变成这样:
(float) piD = 3.1415927
尝试使用打印语句上的变量,当你不理解的结果,这是了解这个东西,一个伟大的方式!
这里是打印语句我加供大家参考:
System.out.println("piF = " + piF);
System.out.println("piD = " + piD);
System.out.println("(float) piD = " + (float) piD);
@Pooya它不重复......请阅读我的问题,它是多样的。 –
我不知道我的问题为什么被低估。请告诉我为什么它被低估了。 –