2014-05-06 8 views
7

मैं NSDictionarayऑब्जेक्टिव-सी: NSJSONSerialization चल बिन्दु संख्या मुद्दा

को json स्ट्रिंग परिवर्तित करने के लिए उपयोग कर रहा हूँ NSJSONSerialization

JSON स्ट्रिंग NSJSONSerialization

{ 
    ask = "88.70399999999999"; 
    bid = "88.667"; 
} 

किसी यह जानते

{"bid":88.667,"ask":88.704} 

के बाद है मुद्दा?

+1

आप किसी भी सवाल का जवाब मिला होगा? ... मुझे इस मुद्दे का सामना करना पड़ रहा है। –

+0

@ मिहिर्महेता नहीं, मैंने नहीं किया। – damo

उत्तर

4

ऐसा लगता है कि NSJSONSerialization आपके मूल्यों को युगल के रूप में क्रमबद्ध करेगा, इस तथ्य के बावजूद कि युगल निश्चित मूल्यों का प्रतिनिधित्व करने के लिए पर्याप्त सटीक नहीं हैं। यहां अधिक जानकारी देखें: Does NSJSONSerialization deserialize numbers as NSDecimalNumber?

यदि परिशुद्धता बहुत महत्वपूर्ण नहीं है, तो आप बस अपने मूल्यों को गोल कर सकते हैं, लेकिन चूंकि आप वित्तीय अनुप्रयोग होने के साथ काम कर रहे हैं, इसलिए अपने मूल्यों को पूर्णांक में बदलना सबसे अच्छा होगा 1000 से गुणा करके, उनको क्रमबद्ध करना, और फिर वापस परिवर्तित करना:

{"bid":88667,"ask":88704} 

स्ट्रिंग का उपयोग करने का एक विकल्प है।

1

अपना सटीक मूल्य प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग करें।

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundUp]; 

NSString *strNumber = [formatter stringFromNumber:[NSNumber numberWithFloat:88.70399999999999]]; 
NSString *strNumber = [formatter stringFromNumber:[NSNumber numberWithFloat:88.667]]; 

आउटपुट हो जाएगा 88.7 & आउटपुट 88.67

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