當我編寫了一個簡單的程序來讀取和使用浮動打印一個數字時,我遇到了一些意想不到的結果。浮動值顯示不正確
時,我進入了一個數量100.62,我得到的結果,下面的程序是100.620003。只有八位數才能正確顯示數值。即使我嘗試了不同的數字,問題仍然存在。爲什麼是這樣?除限制小數點外,是否有辦法解決這個問題?
還有沒有辦法打印一個數字,因爲它是?即;如果我輸入100.62則應打印100.62,如果輸入100.623則應打印100.623(不是100.620000和100.623000)。
int main (void)
{
float i;
printf ("Enter a number : ");
scanf ("%f", &i);
printf ("You entered the number : %f", i)
return 0;
}
如果您只想打印有效數字,請嘗試使用'%g'。另外:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – szczurcio
這就是浮點值在計算機上的工作原理。可以在這裏找到一個解釋:[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –