Objective c NSNumber stringValue与NSNumber value不同

Objective c NSNumber stringValue与NSNumber value不同,objective-c,nsnumber,nsnumberformatter,Objective C,Nsnumber,Nsnumberformatter,我在将NSNumber转换为字符串以及将字符串转换为NSNumber时遇到问题 下面是一个示例问题: NSString *stringValue = @"9.2"; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; NSLog(@"stringvalue:%@",[[formatter numberFromString: stringValue] stringValue]); 输出将是: stringvalue:9

我在将
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

你知道如何在不做任何事情的情况下检索原始字符串值吗?

你发现浮点数不能总是精确地表示出来。关于这些问题的帖子很多

如果需要返回原始字符串,则保留原始字符串作为数据,并且仅在需要执行计算时转换为数字

您可能需要查看
NSDecimalNumber
。这可能更适合你的需要

NSString *numStr = @"9.2";
NSDecimalNumber *decNum = [NSDecimalNumber decimalNumberWithString:numStr];
NSString *newStr = [decNum stringValue];
NSLog(@"decNum = %@, newStr = %@", decNum, newStr);
这为这两个值提供了
9.2