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