2013-10-07 9 views

उत्तर

17

मैं इसके लिए FLT_EPSILON का उपयोग कर की सिफारिश करेंगे:

XCTAssertEqualWithAccuracy(mov.lastDelta, 0.0f, FLT_EPSILON, @"");

जब तक आप एक बड़ा एप्सिलॉन की आवश्यकता के लिए कुछ कारण है।

0

मैं

mov.value = 8.9 
XCTAssertEqualWithAccuracy(mov.lastDelta, 0.0f, 0.001, @""); 

को बदल दिया है और अब यह ठीक काम करने के लिए ...

5

अपने नंबर, 0.9 का आंशिक हिस्सा है, एक नाव से सही रूप में नहीं दर्शाया जा सकता लगता है । कुछ गोलियां घटित होंगी, और शायद यह असफल होने का कारण है।

0.9 = (1/2) + (1/4) + (1/8) + (1/64) + (1/128) + (1/1024) + (1/2048) + (1/16384) + (1/32768) + (1/262144) इत्यादि = 0,8 99 9978005 आदि

मानव आंखों के चारों ओर देखने वाले फ्रैक्शंस बाइनरी सिस्टम में गोल नहीं हो सकते हैं।

0.5 cpu = (1/2) के लिए एक गोल संख्या है।

0.75 cpu = (1/2) + (1/4) के लिए गोल है।

भी 0,9072265625 है दौर ((1/2) + (1/4) + (1/8) + (1/32) + (1/1024))

लेकिन नहीं 0.9 या 0.1 । यहां तक ​​कि 0.2 :)

संपादित करें: और, ज़ाहिर है, फ्लोट की तुलना करने के लिए एक ईपीएसलॉन का उपयोग करें।

संबंधित मुद्दे