我在将NSNumber
转换为string和将string转换为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
不做任何事情的情况下检索原始字符串值吗?
发布于 2013-04-19 04:03:58
您会发现浮点数并不总是能够精确地表示出来。有很多关于这类问题的帖子。
如果需要返回到原始字符串,则将原始字符串保留为数据,并仅在需要执行计算时才转换为数字。
您可能想要研究一下NSDecimalNumber
。这可能更适合您的需求。
NSString *numStr = @"9.2";
NSDecimalNumber *decNum = [NSDecimalNumber decimalNumberWithString:numStr];
NSString *newStr = [decNum stringValue];
NSLog(@"decNum = %@, newStr = %@", decNum, newStr);
这将为这两个值提供9.2
。
https://stackoverflow.com/questions/16096789
复制相似问题