NSNumber numberFromString未放置小数

时间:2015-03-09 15:27:34

标签: ios objective-c nsnumber

我正在尝试将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

此处的实际调试日志图片

enter image description here

但实际上它应该 515.51515 而不是 515.5151499999999

我尝试了所有与f.usesSignificantDigits& amp; f.maximumFractionDigits = 10但没有运气。
请让我知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

尝试使用构造:

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

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