【发布时间】:2010-09-23 22:58:14
【问题描述】:
我有一些特定于语言环境的字符串(例如,0.01 或 0,01)。我想将此字符串转换为 NSDecimalNumber。在examples I've seen thus far on the interwebs 中,这是通过使用 NSNumberFormatter 来完成的:
NSString *s = @"0.07";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setGeneratesDecimalNumbers:YES];
NSDecimalNumber *decimalNumber = [formatter numberFromString:s];
NSLog([decimalNumber stringValue]); // prints 0.07000000000000001
我正在使用 10.4 模式(除了根据文档推荐之外,它也是 iPhone 上唯一可用的模式)但向格式化程序指示我想要生成十进制数字。请注意,我已经简化了我的示例(我实际上是在处理货币字符串)。但是,我显然做错了,因为它返回了一个说明浮点数不精确的值。
将特定于语言环境的数字字符串转换为 NSDecimalNumber 的正确方法是什么?
编辑:请注意,我的示例是为了简单起见。我要问的问题也应该与您何时需要获取特定于语言环境的货币字符串并将其转换为 NSDecimalNumber。此外,这可以扩展为特定于语言环境的百分比字符串并将其转换为 NSDecimalNumber。
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch internationalization