我试图从长值正确显示格式正确的货币.我正在使用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并将转换后的货币金额除以自己的浮动100?
编辑:对于此变通方法,以下文章建议使用NSDecimalNumber来避免舍入问题. NSNumberFormatter to format currency not working for floats