में मुद्रा स्ट्रिंग को फ्लोट में कनवर्ट करें मेरा लक्ष्य सरल है, मेरे पास एक स्थानीय मुद्रा मुद्रा मूल्य (उदाहरण के लिए $ 1,000.00) संग्रहीत टेक्स्टफील्ड है और मुझे टेक्स्टफील्ड से उस मूल्य को वापस ले जाने की आवश्यकता है ताकि कुछ परीक्षण करने के लिए टेक्स्टफील्डऑब्जेक्टिव-सी
कोड है बहुत आसान है, पहले मैं NSNumber एक localizedString के रूप में तो स्वरूपित:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
textfield.text = [formatter stringFromNumber:number];
सब कुछ ठीक काम करता है, लेकिन फिर मैं यह स्थानीय स्ट्रिंग से doubleValue पाने के लिए विपरीत कार्य करें:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle; //also tested with NSNumberFormatterDecimalStyle
double d = [formatter numberFromString:textfield.text].doubleValue;
समस्या
कि फ़ॉर्मेटर सिर्फ अपने स्ट्रिंग के पूर्णांक मान और न दशमलव, बुरा, अगर यह एक कैनेडियन localizedstring है (20 000,00 $) यह केवल रिटर्न 20.
देता हैमैं अब कुछ समय खोज रहा हूं और इस व्यवहार के बारे में कुछ नहीं ढूंढ सकता। वर्कअराउंड निश्चित रूप से टेक्स्टफील्ड में बनाने से पहले एनएसएनंबर को संग्रहीत कर रहा है और फिर इस nsnumber का परीक्षण कर रहा है, लेकिन मुझे वास्तव में यह सुंदर नहीं लगता है।
आपको इस [एक स्थान विशिष्ट स्ट्रिंग से एक NSDecimalNumber प्राप्त] देख सकते हैं [1] के बारे में [1]: http://stackoverflow.com/questions/317311/obtaining-an-nsdecimalnumber-from-a-locale-specific-string –