書上說由于浮點數的精度問題,浮點數不能進行判等操作,這里的判斷相等我想是用變數與一個固定數字判斷相等吧
如果是兩個計算出來的浮點數結果變數,因為浮點數的表示格式是固定的,我個人認為是可以對這兩個浮點數變數做相等的判斷操作的,有沒有大佬能給解釋下,謝謝
uj5u.com熱心網友回復:
是的,正如你所理解,變數與書面值可能有誤差;兩個變數,可以判等的。float f1,f2;
f1=f2=1.0/3;
printf("%d\n", f1==f2);
uj5u.com熱心網友回復:
浮點數格式 http://bbs.csdn.net/topics/390676437uj5u.com熱心網友回復:
因為計算機是二進制的,浮點數因此也是二進制的,二進制的浮點和十進制的浮點無法精確轉換,那么如果兩個 數是有幾個浮點數計算下來,雖然在數學的概念上結果相等,但是在計算機里完全不一致
比如0.3×0.4=0.12 同理 0.2*0.6=0.12 但是這兩個0.12不一樣,因為10進制的0.3無法準確的轉換為二進制
同理0.4,0.2 ,0.6 也是一樣,他們每個數都有誤差,結果自然不一樣
uj5u.com熱心網友回復:
用精度表示,例如差小于多少作為條件uj5u.com熱心網友回復:
當然還是不可以了呀uj5u.com熱心網友回復:
恩,如果使用數學公式推匯出來的結果跟實際結果會由于中間計算程序的誤差導致不準。我現在是存在一堆計算好的浮點數結果,要對這些浮點數進行排序,這里我就不關注計算程序了,只是針對這些已知的結果,這樣應該可以判相等吧。
uj5u.com熱心網友回復:
問題在哪呢?uj5u.com熱心網友回復:
我的計算出來4個字誤導了你們,不考慮計算程序,只是兩個未知的浮點數變數判斷相等uj5u.com熱心網友回復:
嗯,如果在程式中直接使用字面量比如 a=0.4 b=0.4 這樣方式,當然那是一樣。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/135717.html
標籤:C++ 語言
