我的问题是我目前正在使用NSNumberFormatter
NSNumberFormatterDecimalStyle
。我正在使用这个因为我想让逗号分隔每三个数字的数字,就像我把它变成一个字符串时那样。这很好用,但小数位的精度非常小。它只能精确到千分之一的地方。对于我的应用程序,我需要它精确到小数点后12位。我只需将%。12g放在字符串格式中就可以很容易地使用%g格式说明符完成,但我不知道如何使用NSNumberFormatter实现这一点。我尝试删除格式:NSNumberFormatterDecimalStyle
,但这只是使我的数字为整数。任何帮助,将不胜感激。
以下是我目前用于格式化double: number
。
NSNumber *theNumber = [NSNumber numberWithDouble:number];
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[num setNumberStyle:NSNumberFormatterDecimalStyle];
[num setGroupingSeparator:@","];
答案 0 :(得分:1)
确保您正在使用的起始值是双倍的,而不是浮点数。
然后,您是否尝试在格式化程序上设置maximumFractionDigits,然后再使用它进行转换?
答案 1 :(得分:0)
只需设置小数点右边的最小值或数字:
- (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'