解决货币精度问题(NSDecimalNumber)

来源:互联网 发布:java字符串去掉双引号 编辑:程序博客网 时间:2024/05/16 08:27

在项目中经常使用到货币的结算问题,但是货币的精度问题真的很让人头疼~~不论你是用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];

    示例图片
原创粉丝点击