我有一个大约7个小数位的字符串:@"-28.1234212"
我希望将其转换为NSNumber
而不会失去任何精确度。当我执行以下操作时,我最终只会得到4位小数。
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber* convertedNum = [f numberFromString:@"-28.1234212"];
现在,convertNum为-28.1234
而不是-28.1234212
。
是否可以在不损失精度的情况下执行此操作?
答案 0 :(得分:2)
更改数字格式样式
[f setNumberStyle:kCFNumberFormatterNoStyle];
使用kCF NumberFormatter样式
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:kCFNumberFormatterNoStyle];
NSNumber* convertedNum = [f numberFromString:@"-28.1234212"];
NSLog(@"%@",convertedNum);
答案 1 :(得分:1)
如果您正在寻找精确度,可以使用NSDecimalNumber。
NSDecimalNumber *convertedNUm = [NSDecimalNumber decimalNumberWithString:@"-28.1234212"]
答案 2 :(得分:1)
NSString *nowValue =@"-28.1234212";
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:kCFNumberFormatterNoStyle];
NSNumber * nowNum = [f numberFromString:nowValue];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:4]; //set max fraction digit
NSNumber *nowValueFormatted = [formatter stringFromNumber:nowNum];
NSLog(@"%@",nowNum);
NSLog(@"%@",nowValueFormatted);
这可能对你有帮助:)
答案 3 :(得分:0)
为什么需要格式化程序?您可以直接将其转换为NSNumber
NSString *douStr = @"-28.1234212";
NSNumber *num = [NSNumber numberWithDouble:douStr.doubleValue];