当两个操作数是整数并且均匀分开时浮点除法是否始终准确?

时间:2015-09-29 17:26:09

标签: math floating-point precision division

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

例如:

80.0/4.0
=> 20.0

结果正是20.0

是否有一些潜在的值会导致结果不准确,例如19.99999999

2 个答案:

答案 0 :(得分:5)

如果两个整数都可以用浮点格式精确表示(即对于双精度,它们小于2 53 ),那么是的,你将得到确切的值。

浮点不是一些疯狂的模糊随机算法,它确实有明确的确定性行为。准确的操作将始终给出准确的答案,并且不精确的操作将四舍五入到可表示的值(假设您没有对舍入模式做任何有趣的事情):当(1)输入不完全时出现“问题”可表示的(例如0.1或10 20 ),或(2)您正在执行多个操作,其中一些操作可能导致中间舍入。

答案 1 :(得分:4)

根据维基百科,

  

[浮点]除法是通过从被除数的指数中减去除数的指数,并将被除数的有效数除以除数的有效数来实现的。

如果一个数字平均分配另一个数字,那么前者的有效数应该均匀地除以后者的有效数。这将给你一个确切的结果。