让我们说我的字符串值如下 12345.12 在将其转换为NSNumber后,它将以12345.1223122的形式发布 但我想从字符串中得到准确的数字 有没有办法实现它。 我现在正在使用的代码
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber * myNumber = [f numberFromString:aString];
[f release];
答案 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];