NSNumberFormatter 的准确性问题



我的问题是我目前正在使用带有NSNumberFormatterDecimalStyleNSNumberFormatter。我使用它是因为我想让逗号将数字分隔为每三个数字,就像我将其转换为字符串时会写它一样。这很好用,但是小数位的精度很小。它只精确到千分之一。对于我的应用程序,我需要它精确到小数点后 12 位。我可以通过将 %.12g 放入字符串格式来使用 %g 格式说明符非常轻松地做到这一点,但我不知道如何使用 NSNumberFormatter 实现这一点。我尝试删除格式:NSNumberFormatterDecimalStyle但这只会使我的数字成为整数。任何帮助将不胜感激。

这是我目前用来格式化double: number的代码。

NSNumber *theNumber = [NSNumber numberWithDouble:number];
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[num setNumberStyle:NSNumberFormatterDecimalStyle];
[num setGroupingSeparator:@","];

确保您正在使用的起始值是双精度值,而不是浮点数。

那么,您是否尝试过在使用格式化程序进行转换之前在格式化程序上设置最大分数数字?

只需在小数点右侧设置最小值或数字:

- (void)setMinimumFractionDigits:(NSUInteger)number

例:

NSNumber *number = @123456.654321;
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setMinimumFractionDigits:12];
NSString *stringNumber = [formatter stringFromNumber:number];
NSLog(@"Number: '%@'", stringNumber);

NSLog 输出

数字: '123,456.654321000000'

最新更新