floating-point - 在什么范围内,整数算术加法和减法可以精确到 IEEE double 浮点中的整数?

标签 floating-point

根据 Wikipedia on the IEEE 64-bit floating point standard :

Between 252=4,503,599,627,370,496 and 253=9,007,199,254,740,992 the representable numbers are exactly the integers. For the next range, from 253 to 254, everything is multiplied by 2, so the representable numbers are the even ones, etc.



这是否意味着连续整数最多可以表示为 253?

简而言之,我试图找到整数值的范围,在该范围内整数加法和减法运算将产生完全正确的结果。

最佳答案

是的,从 -253 到 +253(含)的所有整数都可以用 IEEE-754 64 位浮点数表示。符合 IEEE 754 的实现将为所有操作返回完全正确的结果 a+ba-b哪里a , b ,并且数学结果是该区间内的整数。

显然,有些结果会在该区间之外,例如 253+1,因此产生此类结果的许多操作会由于四舍五入到可表示的值而产生不精确的值。

一个区间使得 ab作为区间内的整数保证 a+ba-b确切地说是 -252 到 +252(含)。

关于floating-point - 在什么范围内,整数算术加法和减法可以精确到 IEEE double 浮点中的整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20974733/

相关文章:

c++ - 如何计算 C++ 中 double 变量的小数位数?

c++ - double C++

ios - stringWithFormat float 的奇怪行为

C: printf 一个浮点值

c++ - x86_64 上 2 的快速浮点幂

c++ - 如何将多个 fma 操作链接在一起以提高性能?

c# - 我们什么时候需要使用 float.PositiveInfinity 和 float.NegativeInfinity?

c++ - 将十六进制值视为单精度或 double 值

ios - 将 float 值舍入到 .1(十位)

c - 基本字符串到 float 转换