سؤال

لا أفهم كيف يعمل nsnumberformperpercenstyle!

مثال:

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). ما الذي يفعله nsnumberformperpercenstyle مع 90.5 ، ولماذا؟ وكيف يمكنني الحصول على النتيجة المرجوة!؟

هل كانت مفيدة؟

المحلول

من المفترض أن الرقم في حدود 0-1 ، لأنه في المئة

لذلك 0.905 سوف تحصل على 90.5 ٪.

نصائح أخرى

فقط اضبط المضاعف على 1 إذا كانت أرقامك بالفعل في نسبة مئوية.

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

هيا لنبدأ مع الأساسيات:

  • 1 = 100%
  • 1/2 = 0.5 = 50%

"في المئة" تعني "من أصل 100" ، لذلك 12 ٪ يعني 12/100. أنت لا "تضاعف على 100" للحصول على قيمة مئوية ، فإنك تتضاعف بنسبة 100 ٪ (وهو نفس الضرب بمقدار 1 ، وهو نفس عدم القيام بأي شيء).

لا يستخدم الجميع القاعدة 10 (على الرغم من أن معظم اللغات "الحديثة" تفعل) ، ولا يستخدم الجميع 100 كمقام. انظر ، على سبيل المثال ، permillsymbol (أو kcfnumberformterpermillsymbol). لا يوجد تنسيق "permill" ، ولكن من الممكن أن يستخدم تلقائيًا للمواقع التي لا تستخدم النسب المئوية.

انظر أيضًا: لكل علامة Mille (‰) وكل عشرة آلاف علامة (‱).

لا أعرف تلك اللغة ، ولكن بناءً على عينة الكود والإخراج ، أعتقد أن النسبة المئوية تتضاعف بنسبة 100 ثم تضع علامة ٪ بحيث تصبح 1 100 ٪. ما تريده هو استخدام .905 ، والذي يجب أن يصبح 90.5 ٪.

يتوقع تنسيق "نمط المئة" عددًا من 0.905 إذا كنت تريد أن ينتهي به المطاف 90.5%. يفسر 90.5 من أصل 1 ، لذلك 9050 ٪ من 1.

إجابة Pulkit Goyal صحيحة ... ضبط المضاعف على 1 يجعل "50" في "50 ٪"

سريع 4/5

خلق NSNumber التمديد مثل هذا

extension NSNumber {
    func getPercentage() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .percent
        formatter.maximumFractionDigits = 0 // You can set what you want
        return formatter.string(from: self)!
    }
}

الحصول على نسبة

let confidence = 0.68300 as NSNumber
print(confidence.getPercentage())

انتاج |

68%

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top