我正在尝试将NSString转换为NSNumber,它似乎在这里创建一个小数点问题。
NSString *str = @"515.51515";
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:str];
NSLog(@"Number here:%@",myNumber);
[f release];
&安培;结果打印是 2015-03-01 08:09:28.353 myApp [57376:2086924]这里的数字: 515.5151499999999
此处的实际调试日志图片
但实际上它应该 515.51515 而不是 515.5151499999999 。
我尝试了所有与f.usesSignificantDigits& amp; f.maximumFractionDigits = 10但没有运气。
请让我知道如何解决这个问题?
答案 0 :(得分:1)
RMaddy是正确的,浮点数会有点偏。
由于NSDecimalNumber是NSNumber,您可以使用:
NSNumber *number = [NSDecimalNumber decimalNumberWithString:@"515.51515"];
答案 1 :(得分:0)
尝试使用构造:
NSNumber *myNumber = [NSNumber numberWithFloat:[str floatValue]];
我认为它应该可以正常工作。