大多数处理器使用 IEEE 754 二进制浮点运算。在这种格式中,数字表示为符号s、分数f和指数e。分数也称为有效数。
符号s是位 0 或 1,分别表示 + 或 -。
在双精度中,尾数f是 53 位二进制数字,第一位后有小数点,例如 1.1010000100100110011100011011001100101010000000100011 2。
在双精度中,指数e是从 –1022 到 +1023 的整数。
由符号、有效数和指数表示的组合值是 (-1) s •2 e •<em>f。
当您添加两个数字时,处理器会计算出结果使用的指数。然后,给定该指数,它会计算出用于结果的分数。当您添加一个大数字和一个小数字时,整个结果将不适合有效数字。因此,处理器必须将数学结果四舍五入,使其适合有效数字。
在您询问的情况下,第二个添加的数字非常小,以至于四舍五入产生与第一个数字相同的值。为了更改第一个数字,您必须添加一个值,该值至少是第一个数字有效位中最低位值的一半。(四舍五入时,如果不适合有效数字的部分超过有效数字的最低位的一半,则向上舍入。如果恰好是一半,则如果使最低位为零则向上舍入,如果使最低位为零则向下舍入使最低位为零。)
浮点数还有其他问题,例如次正规数、无穷大、指数的存储方式等等,但上面解释了您询问的行为。
在您询问的特定情况下,添加到 360,添加任何大于 2 -45的值将产生大于 360 的总和。添加任何小于或等于 2 -45的正值将恰好产生 360。这是因为最高360 中的位是 2 8,因此其有效位的最低位是 2 -44。