我在将NSNumber
转换为字符串和字符串转换为NSNumber
时遇到问题。
以下是一个示例问题:
NSString *stringValue = @"9.2";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSLog(@"stringvalue:%@",[[formatter numberFromString: stringValue] stringValue]);
输出将是:
stringvalue:9.199999999999999
我需要检索原始值,其中示例应为9.2
。
相反,当原始字符串为9.4
时,输出仍为9.4
。
您是否知道如何在NSNumber
做任何事情的情况下检索原始字符串值?
答案 0 :(得分:6)
您发现浮点数不能总是精确表示。关于此类问题的帖子很多。
如果您需要返回原始字符串,请将原始字符串保留为数据,并在需要执行计算时仅转换为数字。
您可能需要查看NSDecimalNumber
。这可能更适合您的需求。
NSString *numStr = @"9.2";
NSDecimalNumber *decNum = [NSDecimalNumber decimalNumberWithString:numStr];
NSString *newStr = [decNum stringValue];
NSLog(@"decNum = %@, newStr = %@", decNum, newStr);
这为两个值提供了9.2
。