我有以下代碼
案例1爲什麼有不同類型的輸出的不同的浮筒比較
float a=1.7;
if(a==1.7)
{
printf("Equal\n");
}
else if(a<1.7)
{
printf("less\n");
}
else{
printf("Greater\n");
}
輸出
Greater
案例2
float a=1.3;
if(a==1.3)
{
printf("Equal\n");
}
else if(a<1.3)
{
printf("less\n");
}
else{
printf("Greater\n");
}
輸出
Less
爲什麼並不如預期的產出?
爲什麼兩種情況下的輸出都不相同?
誰能解釋這些值是如何存儲和這裏相比
預先感謝
'a'是'float',1.7是'double'。由於分配到最接近的FP值,1.7到'float'和1.7到'double',它們是不同的。 – chux 2014-12-05 04:37:17
當你寫一個= 1.3時,它不完全存儲1.3。它可以是1.3000000001或也可以是1.29999999。這取決於編譯器。所以要檢查兩個浮點數是否相等,你必須使用fabs()。你可以這樣寫: if(fabs(a-1.3)<1e-6) printf(「Equal \ n」); } – Mukit09 2014-12-05 04:37:46
感謝您的回覆 – 2014-12-05 04:43:36