2017-10-16 118 views
-5

在下面的例子中,出把顯示的是假爲什麼浮動值比較失敗?

float f = 0.1; 
    if (f == 0.1) 
     printf("True"); 
    else 
     printf("False"); 

但是,如果使用整數,而不是其浮動放出來爲True 可能是什麼原因?

+3

你可以只寫文字爲'0.1f'得到_more_ ** **的機會比較成功 –

+2

使用谷歌盧克。 –

+0

如果您使用整數,那麼這兩個值都是零。這不關你嗎? – EJP

回答

3
if (f == 0.1) 

這裏,0.1double類型不float類型。表達式f == 0.1在右側存在雙精度值,它們存儲在Double-precision floating-point format中,而浮點數存儲在左側的single precision floating point format中。雙精度格式比單精度格式使用更多的位精度。

如果你想回答True,那麼在0.1文字末尾指定f

float f = 0.1; 
    if (f == 0.1f) 
     printf("True"); 
    else 
     printf("False"); 

或者

if (f == (float)0.1)