Monniaux的优秀文章"The Pitfalls of Verifying Floating Point Arithmetic"给出了意外数值行为的例子。但是,大多数示例依赖于扩展精度FPU或扩展精度操作(例如乘法累加)。除了有符号的零和涉及NaN的比较之外,当扩展精度硬件被禁用时,是否存在令人惊讶的数值行为的好例子?
答案 0 :(得分:4)
程序员经常会感到惊讶的一个例子是x + 1 == x
。在单精度浮点中,由于尾数的精度有限,x
与2^25
一样小。当通过较小的时间步长递增模拟中的时间值时,通常会出现这种情况。 similar problem {{3}}影响了爱国者导弹。