怎么样判断两个浮点数精确相等?一般来说是两个数差的绝对值和一个极小值比较,如果小于这个极小就,就认为是相等。
前两天在LinuxSir上看到一个贴子,讨论这个问题,发现可以精确比较相等。
代码如下:
发现用这种方法在Ubuntu8.04,GCC4.24的情况下通过。不过这种方法个人感觉只能用来比较一个程序内部生成的浮点数的运算。
如果两个浮点数是由两台不同平台的机器运行的程序生成,或者不同编译器生成的程序运行产生,则可能根据无法得到相等的结果。
因现在只有x86的机器,谁手上有ARM平台之类的,请帮忙测试一下。谢谢
当直接用==比较两个浮点数时,随着整数部分增加,精度急剧下降
当比较0.000...001和0.000.。0011时,到65个零都没有问题,能得到正确结果 当比较1.000..001和0.000.00011时,小数点后14个零时,就不能得到正确结果。
Powered by: C++博客 Copyright © 绝对零度