我從其他地方得到這段代碼片段。根據網站管理員,代碼摘自The art of computer programming by Knuth計算機編程藝術中近似等於和基本等於的差異
由於我沒有該書的副本,我可否知道這兩個函數之間有什麼區別?
bool approximatelyEqual(float a, float b, float epsilon)
{
return fabs(a - b) <= ((fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
bool essentiallyEqual(float a, float b, float epsilon)
{
return fabs(a - b) <= ((fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
我可以說,基本上等於總是需要一個「接近」值大約等於? – 2010-09-16 17:03:03
是的,「本質上等於」值總是比「大約等於」值「更接近」。 – palswim 2010-09-16 17:08:41
想想您的常規商店的優惠以及那裏的百分比。價格33%折扣或額外免費產品33%更有價值?解決方法是,您應該更喜歡33%的折扣,因爲這相當於50%的額外免費產品優惠。同樣的情況發生在這裏,取決於你是否在兩個值中的較大或最小值附近獲得了ε,結果會有所不同。 66.6近似等於100,具有33%ε,但僅與50%ε基本相等。 – 2010-09-16 17:24:20