-2
我有奇怪的結果與浮子操作:奇怪結果與浮點數操作
float a = myView.frame.size.height/2.0;
float b = (myFrame.size.height/2.0);
float c = a-b;
在調試模式下
: 一個= 201; b = 201; c = -3.05176e-05 ???
爲什麼?
我有奇怪的結果與浮子操作:奇怪結果與浮點數操作
float a = myView.frame.size.height/2.0;
float b = (myFrame.size.height/2.0);
float c = a-b;
在調試模式下
: 一個= 201; b = 201; c = -3.05176e-05 ???
爲什麼?
這個問題其實就是你如何計算myView.frame.size.height和myFrame.size.height。
如果它們都是402,那麼c將爲零。除以2對於正常浮點數是精確的。其中至少有一個與402略有不同。如果您需要查找差異的原因,則需要輸出更多數字以查看哪一個不完全是402,並查看該變量的計算方式。
但是,如果使用float,則通常應該在第7位有效數字附近預測舍入誤差,因此您的另一種選擇是將值約爲200的值與絕對值小於1e-4的差值視爲零。
如果您爲a和b打印更多小數位,您應該看到它們在小數點後第五位附近有所不同。 –