[英]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.