【发布时间】:2012-07-19 10:13:23
【问题描述】:
我想在 Cocoa-Touch 上创建具有正确本地化的浮点数的格式化输出。输出应该等同于printf("%<a>.<b>f", n) 的输出,其中<a> 是总位数,<f> 是最大小数位数。
NSNumberFormatter 与 <a>=6 和 <f>=2 的设置:(平台为 iOS 5.1 SDK、Xcode 4.3.3 和 iPhone Simulator 5.1)
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
[nf setPaddingCharacter:@" "];
[nf setUsesGroupingSeparator:NO];
[nf setLocale:[NSLocale autoupdatingCurrentLocale]];
[nf setUsesSignificantDigits:YES];
[nf setMaximumSignificantDigits:6];
[nf setMaximumFractionDigits:2];
[nf setRoundingMode:NSNumberFormatterRoundFloor];
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]);
预期输出(使用德语区域设置):Test: 2,64
观察到的输出(使用德语区域设置):Test: 2,64324
其他意见:
我尝试对小数位使用不同的值,例如[nf setMaximumFractionDigits:4] 或 [nf setMaximumFractionDigits:0]。结果没有改变,似乎忽略了小数位。将语言环境更改为 US 只会将 , 更改为 .,而不是小数位数。
问题:如何将printf-format 字符串正确转换为NSNumberFormatter?
【问题讨论】:
标签: cocoa-touch nsnumberformatter