我们在教科书上经常看到,想判断两个浮点数是否相等,往往不能直接用 == 判断。这是因为浮点数的运算经常有误差,导致结果有细小的误差,在判断 『More』
吖恶俗牙色阿欢欢 - 回复 | (1980) | 好人和坏人大河人云亦 | 2008-06-06 03:12:20
我觉得降低精度的方法有问题。 二进制数: 1.00000 和 0.11111比较 『More Lines』- 回复 | (962) | kaikai | 2006-02-14 09:39:59
如果有人对浮点数比较的问题有兴趣, 这里给个参考链接 :) 当然如上面我的一个回帖所说, 我的原意倒并非讨论浮点数比较的.
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - 回复 | (415) | 云风 | 2004-07-18 12:53:15
对于一个除了奔腾之外其它什么硬件都不用的程序员来说,这种说法是傻不啦叽。
你自己也知道,对于奔腾系列来说 fabs(a-b)<0.00001 语句最终汇编 『More』 - 回复 | (413) | BenevolentLiao | 2004-07-17 05:49:53
fabs(a-b)<0.00001 这种方法其实是很不负责任的. 今年我在 GDC2005 上听了一个session 就是关于浮点运算的 robust.
0.00001 在任何地方都可以用的吗? 当 a 本身是 0.1 还是 一百万的时候. 选择就很不一样.
EPSILON != 0.00001 我在那个 session 的 ppt 第一页就看见这样的标题 :)
纠正一个错误, FCMP 的结果并不能影响标记寄存器,然后用于条件跳转。还需要做一次对 ax 的整数比较.
& 操作只需要一条整数指令就可以完成, 不 『More』 - 回复 | (414) | 云风 | 2004-07-18 12:34:57