5
可以用double(或float)表示的(連續)整數的確切範圍是什麼?我問的原因是因爲我很好奇questions such as this one將會發生精度損失。可精確表達爲浮點數/雙精度的整數範圍
也就是說
- 什麼是最小正整數
m
這樣m+1
不能準確地表示爲雙(相應浮動)? - 什麼是最大的負整數
-n
這樣-n-1
不能精確地表示爲雙精度浮點數? (可能與上面相同)。
這意味着-n
和m
之間的每個整數都具有精確的浮點表示形式。我基本上都在尋找範圍爲[-n, m]
的浮標和雙打。
讓我們將範圍限制爲32位和64位浮點表示。我知道浮點數有24位精度,雙精度浮點數有53位(都帶有隱藏的前導位),但由於浮點表示的複雜性,我正在尋找一個權威答案。請不要揮手!
(理想的答案將證明,所有的整數從0
到m
的表達,而m+1
不是。)
我用語言標記,因爲我沒有嘗試過其他標記的流量。謝謝你的回答! – 2013-03-26 17:19:28
Kyurem在他的分析中死光。但是如果你想要一個經驗的解決方案,只需用一個for循環進行測試:'float f = 0; for(;; ++ f){if(f ==(f + 1)){cout << f;打破; }}。類似的雙打和消極。 – 2013-03-26 17:33:34