Double vs Float-Java
我有以下节目。这是我的老师为了好玩而给我的。我对结果感到惊讶 代码:Double vs Float-Java,java,double,Java,Double,我有以下节目。这是我的老师为了好玩而给我的。我对结果感到惊讶 代码: public class Testing { public static void main(String[] args) { float piF = 3.141592653589793f; // value assigned has float precision double piD = 3.141592653589793; // value as
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不相等呢?而实际上是什么使得两者相同呢?我在终端中运行了这个,然后为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
当您不了解结果时,尝试在变量上使用print语句,这是了解这些内容的好方法
以下是我添加的打印声明供您参考:
System.out.println("piF = " + piF);
System.out.println("piD = " + piD);
System.out.println("(float) piD = " + (float) piD);
@普亚,它不是复制品。。。请阅读我的问题,它是多样的。我不知道为什么我的问题被否决了。请告诉我为什么它被否决了。