2010-08-11 12 views
16

मुझे समझ में नहीं आता कि NSNumberFormatterPercentStyle कैसे काम करता है!स्वरूपण संख्या प्रतिशत के रूप में

उदाहरण:

NSNumber *number = [NSNumber numberWithFloat:90.5]; 
NSNumberFormatter *percentageFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 

NSString *strNumber = [percentageFormatter stringFromNumber:numbericString]; 
NSLog (strNumber); // Output: 9,050% 

मैं बस "90.5%" (NSLocal सम्मान) दिखाना चाहते हैं। NSNumberFormatterPercentStyle 90.5 के साथ क्या कर रहा है, और क्यों? और, मैं अपना वांछित परिणाम कैसे प्राप्त कर सकता हूं !?

उत्तर

26

इसका यह मानते हुए कि संख्या, 0-1 की सीमा में है, क्योंकि यह एक प्रतिशत

इसलिए 0.905 आप 90.5% प्राप्त होता है।

2

मुझे वह भाषा नहीं पता, लेकिन आपके कोड नमूना और आउटपुट के आधार पर, मुझे लगता है कि प्रतिशत फॉर्मेटर 100 से गुणा करता है और फिर% साइन डालता है ताकि 1 100% हो जाए। आप क्या चाहते हैं .905 का उपयोग करना है, जो 90.5% बनना चाहिए।

1

"प्रतिशत शैली" फ़ॉर्मेटर 0.905 की अपेक्षा करता है यदि आप 90.5% के साथ समाप्त करना चाहते हैं। यह 90.5 1 से बाहर के रूप में व्याख्या, तो यह की 1.

3

9050% है की मूल बातें साथ शुरू करते हैं:

  • 1 = 100%
  • 1/2 = 0,5 = 50%

"प्रतिशत" का अर्थ है "100 में से", इसलिए 12% का अर्थ 12/100 है। प्रतिशत प्रतिशत प्राप्त करने के लिए आप "100 से गुणा नहीं करते", आप 100% से गुणा करते हैं (जो 1 से गुणा करने जैसा ही है, जो कुछ भी नहीं कर रहा है)।

हर कोई आधार 10 का उपयोग नहीं करता है (हालांकि अधिकांश "आधुनिक" भाषाएं करते हैं), और हर कोई 100 को एक denominator के रूप में उपयोग नहीं करता है। उदाहरण के लिए, PerMillSymbol (या केसीएफ नम्बरफॉर्मेटरपेरमिल सिम्बल) देखें। कोई "परमिट" प्रारूप नहीं है, लेकिन यह संभव है कि यह स्वचालित रूप से उन लोकेशंस के लिए उपयोग किया जाता है जो प्रतिशत का उपयोग नहीं करते हैं।

यह भी देखें: प्रति मिली साइन (‰) और प्रति दस हजार हस्ताक्षर (‱)।

42

यदि आपके नंबर पहले से ही प्रतिशत में हैं तो गुणक को 1 पर सेट करें।

numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterPercentStyle]; 
[numberFormatter setMaximumFractionDigits:0]; 
[numberFormatter setMultiplier:@1]; 
+0

वास्तव में मैं क्या जरूरत है, धन्यवाद! – kernix

+5

उत्कृष्ट! स्वीकार्य उत्तर होना चाहिए! – orkenstein

0

पुलकित गोयल का जवाब सही है ... 1 बनाता है '50' '50% में 'के लिए गुणक की स्थापना

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