2

我在转换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不做任何事情的情况下检索原始字符串值吗?

4

1 回答 1

7

您发现浮点数并不总是能准确表示。有很多关于此类问题的帖子。

如果您需要返回原始字符串,则将原始字符串保留为您的数据,仅在需要执行计算时转换为数字。

你可能想调查一下NSDecimalNumber。这可能更适合您的需求。

NSString *numStr = @"9.2";
NSDecimalNumber *decNum = [NSDecimalNumber decimalNumberWithString:numStr];
NSString *newStr = [decNum stringValue];
NSLog(@"decNum = %@, newStr = %@", decNum, newStr);

这给出9.2了两个值。

于 2013-04-19T04:03:57.807 回答