解决货币精度问题(NSDecimalNumber)

在项目中经常使用到货币的结算问题,但是货币的精度问题真的很让人头疼~~不论你是用float类型还是double类型在累加的时候好像总是精度不够呢

  • 这里我们就使用到了NSDecimalNumber货币类了,初始化对象
    NSDecimalNumber *decimal = [[NSDecimalNumber alloc]initWithString:string];
  • 价格的累加,decimalNumberByAdding:。货币累的累加并不能像其他的基本数据类型似的 +=或者 ++,这里的计算只能使用一个NSDecimalNumber类型的对象承接上一个对象的数据。
    NSDecimalNumber *defaultPrice = [self getDecimalPriceWithNum:@"0"];
    NSDecimalNumber *totalPrice = [self getDecimalPriceWithNum:@"0"];
    //计算总价 确保精度
    NSDecimalNumber *getPrice = [self getDecimalPriceWithNum:[NSString stringWithFormat:@"%@",price]];
    defaultPrice = totalPrice;
    totalPrice = [defaultPrice decimalNumberByAdding:getPrice];

    示例图片

猜你喜欢

转载自blog.csdn.net/shutongit/article/details/72866130