我得到的問題是,如果我將一個大數字分配給一個浮點類型,例如float f = 1.0e20
然後我將它打印到屏幕printf("f = %f\n",f)
,然後在屏幕上它將是f = 100000002004087730000.000000
。誰能告訴我爲什麼數字顯示不是100000000000000000000.000000
。提前致謝。大量存儲在C中的浮點數類型
-2
A
回答
2
您使用的號碼在您存儲的類型中沒有確切的表示。因此,答案永遠不會完全正確。
以類比的方式,考慮使用6位十進制數字的計算機。您可以爲1/3
做的最好的是.333333
但是然後3 * (1/3) != 1
。好吧。
那麼2/3
呢?如果您使用.666667
,則使用2/3 != 2 * (1/3)
。如果您使用.666666
,則使用1/3 + 2/3 != 1
。好吧。
這就是浮點數的方式。
0
總結,浮點變量表示爲aproximation的固定數字,稍後用指數進行縮放。在你的情況下,這個數字太大而無法以準確的方式存儲。改爲使用double
,然後用%lf
打印出來。它會更準確,但不要指望真正的平等。
+1
當然,在詢問之前,嘗試用自己的答案進行搜索。 – Adonais
+0
要打印'double's,使用'%f','l'修飾符在'f'轉換說明符之前不起作用。 –
相關問題
- 1. 在浮點數中存儲浮點數?
- 2. C++:將大量數據存儲在像PHP這樣的浮點數中?
- 3. C中浮點類型的整數值
- 4. mysql浮點存儲大小?
- 5. 數據類型存儲大量
- 6. 可以存儲浮點類型數組中的id值嗎?
- 7. 數據類型來存儲整數和SQL Server的浮點值
- 8. 存儲大量數據點?
- 9. 在一個浮點變量中存儲兩個浮點值
- 10. 浮點變量不存儲小數
- 11. 在向量數學中的大型浮點數
- 12. 在C中存儲數據類型
- 13. 在C中的struct中存儲浮點數字
- 14. 將浮點數存儲在文件中
- 15. 如何在NSUserDefaults中存儲浮點數
- 16. 如何在數組C++中存儲浮點數
- 17. 如何將共享內存中的浮點向量存儲在C++中?
- 18. 存儲泛型T類的C++向量
- 19. C#中的什麼類型存儲64位雙精度浮點值?
- 20. 是否可以將C數據類型存儲在變量中?
- 21. 數據定義沒有浮點數組定義的類型或存儲類
- 22. (浮點數)在C中的類型轉換
- 23. 在C浮點unsigned int類型
- 24. 如何將bool類型變量存儲在內存中? (C++)
- 25. C#:存儲大量數據的my.settings
- 26. 在c中的變量小數點後存儲零點#
- 27. 這是C語言中最大的數據類型來存儲大數值嗎?
- 28. MIPS中浮點寄存器的數量
- 29. 在C++或c中存儲大數字
- 30. 在java中存儲大數的id基本數據類型?
精度.......問題提出了很多次,並且在SO –
上有很多形式http://web.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf –
請參見http:// stackoverflow。 com/questions/1839225/float-addition-promoted-to-double – Bingo