我用百度搜索了网上有关这个问题的解答,发现有以下4种方法:
(1)使用fabs(a-b) <= numeric_limits<float>::epsilon()
(2)使用!a>0&&!a<0
(3)使用!a>0&&!a<0
(4)将a,b分别乘于100后比较再分别除以100
我理解了方法(1),但不理解方法(2),还有方法(3)是不是错误的?
希望高手赐教!
哦!写错了……
改错如下:
(3)使用a>0&&a<0
还有方法(4)是不是错误的?
谢谢大家!
利德大侠:
————————————————————————————
专业的解法是这样的:
| u - v | / |u| <= e and | u - v | / |v| <= e(1)
| u - v | / |u| <= e or | u - v | / |v| <= e (2)
(1)式用来判断两个浮点数非常接近
(2)式用来判断两个浮点数足够接近
————————————————————————————
其中有几点我不大明白:
(1)文段中的e是指什么?自然数e?
(2)“非常接近”和“足够接近”的含义?区别?作用?
(3)希望大侠能解释一下这个算法的原理。(我只是一个C++初学者,刚刚查了一下Boost库的相关介绍,只知道了Boost库是怎么一回事,至于要使用如此复杂的它,看来仍需长时间努力。)