我有一些特定于区域设置的字符串(例如,0.01 或 0,01)。我想将此字符串转换为 NSDecimalNumber。来自到目前为止我在互联网上看到的例子 http://developer.apple.com/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfNumberFormatting10_4.html,这是通过使用 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。
多年后:
+(NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString
in NSDecimalNumber
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)