【发布时间】:2014-02-19 09:19:26
【问题描述】:
我指的是this Oracle 文档。在尝试执行以下操作时,
public static void main(String args[]){
float f = 1.1f;
double df = 1.1f;
System.out.println("f=" + f);
System.out.println("df=" + df);
f = 1.5f;
df = 1.5f;
System.out.println("f=" + f);
System.out.println("df=" + df);
}
输出是
f = 1.1
df = 1.100000023841858
f = 1.5
df = 1.5
为什么第二行输出显示的是近似值。但不适用于第四行。 值是如何计算的?
【问题讨论】:
-
顺便说一句
1.1f是float文字,将其分配给 double 可能会产生误导。 -
第一个只是没有告诉你它具有相同的近似值floating-point-gui.de
-
df实际上是这个1.500000000000000,零被跳过了 -
有关浮点表示的更多信息,请参阅 ieee 754 标准
-
您的问题实际上是关于将单精度值打印作为双精度值。简而言之,Java 只打印足够的数字,以便准确地确定单精度或双精度值。当您将
1.1f打印为double时,该类型具有更高的精度,因此需要更多的数字来明确double的含义。见stackoverflow.com/questions/916081/…
标签: java floating-point double