簡體   English   中英

NSNumberFormatter故障

[英]NSNumberFormatter glitch

我有一個奇怪的問題。 它似乎只出現在測試人員的iPhone 5s上。 它可以在運行最新iOS(8.3)的iPhone 5、6和6 plus上正常運行。

這是代碼

-(NSString *) commaString:(double)number
{
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
    [numberFormatter setGroupingSize:3];
    [numberFormatter setMaximumSignificantDigits:9];
    NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble: number]];

    return numberAsString;
}

該應用程序是一個計算器,通常像這樣正確顯示

通常這樣正確顯示 在此處輸入圖片說明
但在這部iPhone 5s上卻像這樣顯示 在此處輸入圖片說明

我以為setMaximumSignificantDigits可以將其扼殺在萌芽狀態,但它仍顯示相同的內容。 這可能是一些奇怪的本地化問題嗎? 我不認為這是因為他的iPhone 6也能正確顯示。
謝謝
盧克

如果您的目標是僅使每三個字符使用逗號,那么您要做的就是:

    NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
    numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;

    NSNumber * numberFromString = [numberFormatter numberFromString:currentTextWithoutCommas];
    NSString * formattedNumberString = [numberFormatter stringFromNumber:numberFromString];

如果發現格式化程序本地化存在問題,則將secondaryGroupingSize設置為3。如在NSNumberFormatter文檔中所寫:

一些語言環境允許為更大的數字指定另一個分組大小。 例如,某些語言環境可能表示61、242、378.46(例如在美國)為6,12,42,378.46。 在這種情況下,輔助分組大小(覆蓋距離小數點最遠的數字組)為2。

另外,您可以在iOSDeveloperTips上查看格式化數字 ,以獲取簡要的高級概述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM