使用小数精确地将NSString转换为NSNumber

时间:2012-10-10 04:19:36

标签: objective-c ios ios5 ios4 ios6

让我们说我的字符串值如下 12345.12 在将其转换为NSNumber后,它将以12345.1223122的形式发布 但我想从字符串中得到准确的数字 有没有办法实现它。 我现在正在使用的代码

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSNumber * myNumber = [f numberFromString:aString];
    [f release];

4 个答案:

答案 0 :(得分:3)

如果您正在处理货币类型的数字(只是您使用货币格式格式器的猜测),您可能想要使用NSDecimalNumber。与标准浮点类型不同,十进制数字使用基数为10的指数,这样您在处理货币问题时总能得到完全预期的准确度 - 即它们与使用整数然后在基数10中移动小数点相同表示。

答案 1 :(得分:1)

这样做:

NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
[f setMaximumFractionDigits:2];
NSNumber * myNumber = [f numberFromString:aString];
[f release];
NSLog(@"%@",myNumber);

答案 2 :(得分:1)

尝试这样......

 NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber * myNumber=[NSNumber numberWithFloat:[[f numberFromString:aString] floatValue]];

我认为这会对你有所帮助。

答案 3 :(得分:0)

已经有几年了,但这行得通:

double d = [@"123.45" doubleValue];
NSNumber* n = [NSNumber numberWithDouble:d];