iphone - Cast as an NSNumber doubleValue adding extra [phantom] precision -
iPhone एसडीके 3.2.1
NSMutableDictionary * myDict = [NSMutableDictionary dictionaryWithCapacity: 2]; [MyDict सेट ऑब्जेक्ट: [एनएसएनम्बर नंबर के साथ दोहरा: 0.1 एफ] के लिए: @ "testDoubleObject"]; [MyDict सेट वैल्यू: [एनएसएनम्बर संख्या डबलडेल डबल: 0.1 एफ] के लिए की: @ "टेस्ट डबल दोहरे"];
कंसोल पैदावार इस के लिए myDict का विवरण मुद्रण:
myDict का मुद्रण वर्णन: {प्रकार = परिवर्तनशील, गिनती = 2, क्षमता = 3, जोड़े = ( 0: {सामग्री = "testDoubleObject"} = {मूल्य = 0.10000000149011611938, type = kCFNumberFloat64Type} 1: {सामग्री = "testDoubleValue"} = {मूल्य = 0.10000000149011611938, type = kCFNumberFloat64Type})}
पुलिंग वापस dict से बाहर युगल से पता चलता इन प्रेत अंक संरक्षित किया जा रहा है:
NSNumber * doubleFromObject = [myDict objectForKey: @ "testDoubleObject"]; एनएसएनम्बर * डबलफ्रेम वैल्यू = [myDict valueForKey: @ "testDoubleValue"];
मुद्रण doubleFromObject और doubleFromValue कंसोल में इस पैदावार:
doubleFromObject का मुद्रण वर्णन: {मूल्य = 0.10000000149011611938, type = kCFNumberFloat64Type}
DoubleFromValue का प्रिंटिंग विवरण: {value = +0.10000000149011611938, प्रकार = kCFNumberFloat64Type}
एक ही बात तब होती है जब मैं एक स्ट्रिंग से NSNumber डबल वैल्यू बनाने का प्रयास करता हूं:
NSString * DoubleAsAString = @ "0.1"; एनएसएनम्बर * डबलएएसएएनएआरएमआरबी = [एनएसएनम्बर संख्यावादात्मक दोहराएं: [डबलएएसएएसटीआरिंग डबल वैल्यू]];
डबल एएसएएनएम मुद्रण इस कंसोल में उत्पन्न:
डबल एसएएनएएनएमआर का मुद्रण विवरण: {value = +0.1000000000000000000555, प्रकार = केसीएफएनम्बरफ्लैटा 64 टाइप}
ये अतिरिक्त प्रेत अंक मुझे समस्याओं के कारण कर रहे हैं।
1) क्या ऐसा हो खड़ी कर रहा है?
2) मैं कैसे उन अतिरिक्त प्रेत अंक से छुटकारा पाने के कर सकते हैं?
1 ऐसा होने के कारण क्या हो रहा है?
आप कहते हैं कि ये "प्रेत" अंक एक नंबर का प्रतिनिधित्व करने के उप-उत्पाद हैं।
2 उन अतिरिक्त प्रेत अंकों से मैं कैसे छुटकारा पा सकता हूं?
उनमें से छुटकारा पाने का सबसे अच्छा तरीका निश्चित-सटीक प्रकार का उपयोग करना होगा, जैसे।
Comments
Post a Comment