Java 为什么铸造给我这些奇怪的结果?
这是密码Java 为什么铸造给我这些奇怪的结果?,java,casting,Java,Casting,这是密码 public static void main(String[] args) { double x=5.6556464566546546546556465465465; float y=(float)x; double z= 1+y; System.out.println(x+"\n"+y+"\n"+z); } } 这就是输出 5.6556464566546545 5.655
public static void main(String[] args) {
double x=5.6556464566546546546556465465465;
float y=(float)x;
double z= 1+y;
System.out.println(x+"\n"+y+"\n"+z);
}
}
这就是输出
5.6556464566546545
5.6556463
6.655646324157715
我可以理解x和y的值,但是z是从3°之后的分数中得到的
非常感谢由于它们的存储方式,浮点是Java中实际数字的近似值。如果您需要精确的值,请改用。该问题在上有详细讨论。希望它能回答您的问题。您定义了一个双精度浮点,然后将其转换为单精度。这意味着额外的精度被丢弃了。这里没什么奇怪的。另请参见:。