2015-07-13 40 views
-3

sample.c文件:上面的代碼錯誤的行爲ATOF的()

#include<stdio.h> 
#include<stdlib.h> 

main() 
{ 
    char str[10] = "111.1"; 
    float f = (float)atof(str); 
    printf ("\n (%s , %f) \n",str,f); 
} 

輸出是: (111.1 111.099998)

請建議我是否失去了一些東西。 在此先感謝。

+1

試着用'double'。我經常遇到一些隨機問題,通過使用'float' –

+2

它是因爲double類型(返回類型'atof')的類型轉換爲float,導致最接近的float類型。 –

+1

默認atof以雙數據類型返回。 – Ishmeet

回答

1

從浮動改變翻一番有點幫助,但沒有「解決」的「問題「。首先,沒有問題,只有一種看法。正如Dayal Rai所說,111.099998是最接近你使用浮球的111.1。但即使是double也不能表示111.1,因爲如果使用更多小數位打印它的值,您會發現它。請參閱索希爾奧默引用的參考文獻。