在项目中经常使用到货币的结算问题,但是货币的精度问题真的很让人头疼~~不论你是用float类型还是double类型在累加的时候好像总是精度不够呢
- 这里我们就使用到了
NSDecimalNumber
货币类了,初始化对象
NSDecimalNumber *decimal = [[NSDecimalNumber alloc]initWithString:string];
- 价格的累加,
decimalNumberByAdding:
。货币累的累加并不能像其他的基本数据类型似的 +=或者 ++,这里的计算只能使用一个NSDecimalNumber类型的对象承接上一个对象的数据。
NSDecimalNumber *totalPrice = [self getDecimalPriceWithNum:@"0"];
//计算总价 确保精度
NSDecimalNumber *getPrice = [self getDecimalPriceWithNum:[NSString stringWithFormat:@"%@",price]];
defaultPrice = totalPrice;
totalPrice = [defaultPrice decimalNumberByAdding:getPrice];```
![示例图片](http://upload-images.jianshu.io/upload_images/1401151-a3db98c1acd7b3b6?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)