当两个操作数是整数并且均分时,浮点除法总是准确的吗?

XrX*_*rXr 0 math floating-point precision division

我能否始终相信,当我划分两个精确代表整数的IEEE 754双精度数时,我会得到确切的值?

例如:

80.0/4.0
=> 20.0
Run Code Online (Sandbox Code Playgroud)

结果是完全正确的20.0.

是否存在一些结果不准确的潜在价值19.99999999

Kev*_*vin 5

根据维基百科,

[浮点]除法是通过从被除数的指数中减去除数的指数,然后将被除数的有效数除以除数的有效数来完成的。

如果一个数整除另一个数,则前一个数的有效数应整除后一个数的有效数。这将为您提供准确的结果。


Sim*_*rne 5

如果两个整数可以用浮点格式精确表示(即双打,他们是小于2 53),然后是你会得到确切的价值.

浮点不是一些疯狂的模糊随机算法,它确实有明确的确定性行为.这是不准确会绕到表示值的操作是完全总会给出确切的答案,和操作(假设你没有做什么有趣的与你的舍入模式):"问题"出现时,(1)输入不准确可表示的(例如0.1或10 20),或(2)您正在执行多个操作,其中一些操作可能导致中间舍入.