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