目前制作的app出現(xiàn)了,上述圖片的bug,分享下解決心得,及要注意的地方! 出現(xiàn)問題的代碼: 之后改進(jìn)的代碼: ===================================== float double的內(nèi)存表示及比較大小的方法參考: float和double類型的內(nèi)存分布和比較方法收藏 Comparing floating point numbers 總結(jié)幾點: 0. float占4byte,精度是6~7位;double占8byte,精度是15~16位。 1. C/C++的浮點數(shù)據(jù)類型有float和double兩種。它們在內(nèi)存中是以科學(xué)計數(shù)法的結(jié)果來存儲的。 類型float大小為4字節(jié),即32位,內(nèi)存中的存儲方式如下:
符號位決定浮點數(shù)的正負(fù),0正1負(fù)。 指數(shù)和尾數(shù)均從浮點數(shù)的二進(jìn)制科學(xué)計數(shù)形式中獲取。 2. 關(guān)于比較大小 一般情況下用一個absolute epsilon value來比較(if (fabs(result - expectedResult) < 0.00001))就夠了。但是在某些對數(shù)字精度有特殊要求的domain,比如graphic,需要用更合理的方法。具體,參見引用文獻(xiàn)2. Comparing for equality Comparing with epsilon – absolute error Comparing with epsilon – relative error |
|