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?
根据维基百科,
[浮点]除法是通过从被除数的指数中减去除数的指数,然后将被除数的有效数除以除数的有效数来完成的。
如果一个数整除另一个数,则前一个数的有效数应整除后一个数的有效数。这将为您提供准确的结果。
如果两个整数可以用浮点格式精确表示(即双打,他们是小于2 53),然后是你会得到确切的价值.
浮点不是一些疯狂的模糊随机算法,它确实有明确的确定性行为.这是不准确会绕到表示值的操作是完全总会给出确切的答案,和操作(假设你没有做什么有趣的与你的舍入模式):"问题"出现时,(1)输入不准确可表示的(例如0.1或10 20),或(2)您正在执行多个操作,其中一些操作可能导致中间舍入.