float a=0.1;
if(a==.1)
printf("hello");
else
printf("123");
输出为123
但是对于Java
float a=0.1F;
if(a==.1)
System.out.println("hello");
else
System.out.println("123");
Ans是hello
。
为什么?
答案 0 :(得分:1)
此处==
比较首先将float
转换为double
,然后比较两个值。
float real = 0.1f;
double real2 = real;
System.out.println(real2);
<强> 输出 强>
0.10000000149011612
现在,您可以看到将float
转换为double
以获取值0.1
时,您将无法获得此处的确切值。此处系统会将您的float
值转换为double
,并在数据中使用额外精度。
当你写if(a==.1)
a
时0.10000000149011612
将被转换为0.1
,而不是与已经double
的{{1}}进行比较具有确切的值0.1
,因此结果为false
,并且必须打印123
而不是hello
我确定。
答案 1 :(得分:0)
你比较苹果和橘子。在Java情况下,您应该使用
if (a == 0.1F)