我知道有很多像這樣的問題,但我找不到我的答案。一些浮點精度和數值限制問題
- 根據PC ASM:投票結束(前請仔細閱讀。
The numeric coprocessor has eight floating point registers. Each register holds 80 bits of data. Floating point numbers are always stored as 80-bit extended precision numbers in these registers.
這怎麼可能,當sizeof
顯示不同的東西。例如,在x64架構的情況下,sizeof double
是8這是遠離80bits。
爲什麼
std::numeric_limits< long double >::max()
給我1.18973e+4932
?!這是huuuuuuuuuge號碼。如果這不是獲得浮點數的最大值的方法,那麼爲什麼會編譯,甚至更多 - 爲什麼這會返回一個值。這是什麼意思:
Double precision magnitudes can range from approximately 10^−308 to 10^308
這些龐大的數字,你不能把它們存儲到8B甚至16B(這是擴展精度,這是隻有128位)?
顯然,我錯過了一些東西。其實很明顯,很多東西。
刪除了「C」標籤。 – 2011-05-12 16:29:32
閱讀時間'每個計算機科學家應該知道什麼關於浮點運算' – 2011-05-12 16:31:28
那麼,只有'std :: numeric_limits'用於C++,而不是C.其他的東西都是相同的 - 討論'float',雙'和'長雙',對吧? – 2011-05-12 16:32:17