我有一个奇怪的问题。它似乎只出现在测试人员的iPhone 5s上。 它可以在iPhone 5,6和6上正常运行,全部运行最新的iOS(8.3)。
这是代码
-(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所显示的那样
由于
路加
答案 0 :(得分:1)
如果您的目标是每三个字符只使用一个逗号,那么您需要做的就是:
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上查看Formatting Numbers,以获得简要的高级概述。