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