NSNumber numberFromString 没有放置小数点

NSNumber numberFromString not placed decimals

我正在尝试将 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 & f.maximumFractionDigits =10 的组合,但没有成功。
请让我知道如何解决这个问题?

尝试使用构造:

NSNumber *myNumber = [NSNumber numberWithFloat:[str floatValue]];

我认为它应该可以正常工作。

RMaddy 是正确的,浮点数会有点偏差。

由于 NSDecimalNumber 是一个 NSNumber,您可以使用:

NSNumber *number = [NSDecimalNumber decimalNumberWithString:@"515.51515"];