我能否始终相信,当我划分两个精确代表整数的IEEE 754双精度数时,我会得到确切的值?
例如:
80.0/4.0
=> 20.0
结果正是20.0
。
是否有一些潜在的值会导致结果不准确,例如19.99999999
?
答案 0 :(得分:5)
如果两个整数都可以用浮点格式精确表示(即对于双精度,它们小于2 53 ),那么是的,你将得到确切的值。
浮点不是一些疯狂的模糊随机算法,它确实有明确的确定性行为。准确的操作将始终给出准确的答案,并且不精确的操作将四舍五入到可表示的值(假设您没有对舍入模式做任何有趣的事情):当(1)输入不完全时出现“问题”可表示的(例如0.1或10 20 ),或(2)您正在执行多个操作,其中一些操作可能导致中间舍入。
答案 1 :(得分:4)
根据维基百科,
[浮点]除法是通过从被除数的指数中减去除数的指数,并将被除数的有效数除以除数的有效数来实现的。
如果一个数字平均分配另一个数字,那么前者的有效数应该均匀地除以后者的有效数。这将给你一个确切的结果。