objective-c - 如何正确显示货币 iPhone/Objective-C

标签 objective-c cocoa currency

我正在尝试从长值中正确显示格式正确的货币。我正在使用 NSNumberFormatter,但它似乎切断了我的小数位。

例如,如果我有一个长值 1203(美分),我希望它具有定点格式(如 12.03)。这是我所做的:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
formatter.currencyCode = "USD";
formatter.multiplier = [NSNumber numberWithDouble:0.01];
long currencyAmount = 1203;
NSNumber *number = [NSNumber numberWithLongLong:currencyAmount];
[label setText:[formatter stringFromNumber:number]];

我得到这个输出 $12.00 但我想要 $12.03

最佳答案

想到 NSNumberFormatter 中的整数截止错误是疯狂的猜测,但您是否尝试过默认乘数 1 并自己将转换为 float 后的货币金额除以 100?

编辑:对于此解决方法,以下帖子建议使用 NSDecimalNumber 来避免舍入问题。 NSNumberFormatter to format currency not working for floats

关于objective-c - 如何正确显示货币 iPhone/Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389512/

相关文章:

objective-c - 在 ViewController 中的两个 View 上以编程方式设置自动布局约束

ios - Xcode 9 - 无法发出预编译 header

objective-c - 将 NSAttributedString 转换为字符串并返回

cocoa - 单击停靠图标时如何打开应用程序窗口?

string-formatting - 本地化货币范围

objective-c - arc4随机初始化

cocoa - 添加到多/多对多核心数据关系

c# - 限制文本框中允许的字符(输入金额)

javascript - 如果没有返回值,则将货币格式的 JQgrid 单元格保留为空白,没有默认值

iphone - 为引用的子项目选择构建配置