Tho*_*ini 1 c++ floating-point ieee-754
我的应用程序需要在某些数字上执行一些操作:>,<,==,!=,+, - ,++等(但没有除法).这些数字有时是整数,更少有浮点数.
如果我在内部使用"双"类型(由IEEE 754定义),即使对于整数,直到我可以安全地使用它们就好像它们是int
s一样,而不会出现奇怪的舍入错误(例如,n == 5 && n == 6都是真的,因为它们是相同的数字)?
显然,各种操作的第二个输入(+, - 等)总是一个整数,我知道用0.000 [..] 01我会从一开始就遇到麻烦.
作为奖励答案,同样的问题,但为float
.
比特在数量IEEE-754双尾数为52,有一个额外的隐含位,始终是1.这意味着可以包含恰好是2 ^ 53,或9007199254740992最大值.
浮点尾数是23位,同样带有隐含位.可以精确表示的最大整数是2 ^ 24或16777216.
如果你的意图只是保存整数值,那么通常会有一个比双精度更合适的64位整数类型.
编辑:最初我有2 ^ 53-1和2 ^ 24-1,但我意识到没有必要减去1 - 偶数可以利用尾数右边隐含的0位.