iOS开发:货币的精确计算
一,问题
在做iOS移动端的支付时遇到了一个问题:支付宝支付是直接传入订单金额,而微信支付的单位是以分为单位,需要将订单金额乘以100后取整,因此二导致你的订单的金额与实际的支付金额相差1分钱。解决方法:
//支付金额: paymentAmountString
//订单金额的单位:元
NSDecimalNumber *realPaymentAmount = [NSDecimalNumber decimalNumberWithString:@"paymentAmountString"];
//微信支付单位:分
NSDecimalNumber *exAmount = [NSDecimalNumber decimalNumberWithString:@"100"];
NSDecimalNumber *wxPayAmount = [realPaymentAmount decimalNumberByMultiplyingBy:exAmount];
NSLog(@"微信支付的数据: %d",wxPayAmount.intValue);
二,原因分析
在iOS开发中,和货币价格计算相关的,需要注意计算精度的问题。即使只是两位小数,也会出现误差