我们在教科书上经常看到,想判断两个浮点数是否相等,往往不能直接用 == 判断。这是因为浮点数的运算经常有误差,导致结果有细小的误差,在判断 『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 语句最终汇编成 ESC FPUSH, ESC FPUSH, ESC FSUB, ESC ABS, ESC FCMP。 当代浮点协处理器处理一条这样的指令仅仅需要一个时钟周期,对于一个使用高级语言编程的程序员来说,处理这样的语句甚至连眼睛都眨都不眨。使用那么麻烦的编程技巧,最后能够把运行速度提高 0.001% 就不错。为那 0.001% 的速度你还去花心思?你工作一分钟的成本是多少?我做电路的时候曾经为是不是要省一个电阻而花心思,最后回过神来一个电阻仅仅只值7厘钱,我为一个电阻的事情考虑一分钟,这一分钟的成本足以抵得上100个电阻。
云风你已经不再是一个程序员,你的身价当前比我高出至少一倍,你应该考虑一些更有价值的事情。五条语句让你考虑半天,你以后有可能会重新降价为程序员。这样的思路不可能让你在现在的位置一直坐稳,你还是多想一想其它更为抽象的东西。