关于购物车计算金钱的问题

关于金钱的问题

  • 最开始用floatValue计算的,但是最后计算总金额的时候,出现了问题,减到最后总金额显示”- ¥0.00”.
  • 我很疑惑,都0了,为什么还有负号,在一堆代码中打印了一下总金额,发现是-0.000977.这是怎么回事?怎么还有误差.然后在网上查阅了一下资料,发现floatValu计算会有误差.
  • 解决办法就是用NSDecimalNumber这个类.里面有一些方法,另外还涉及到NSNumberFormatter转化成¥11,111.00这样的格式
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    formatter.numberStyle = NSNumberFormatterRoundDown;
    NSString *money = [formatter stringFromNumber:[NSDecimalNumber decimalNumberWithString:@"99999"]];
    NSLog(@"%@", money);

这里写图片描述

  • 显示$符号是因为我用的是模拟器的原因,真机就会是¥的符号了,和手机设置的语言有关系

  • 计算商品的金额和

+ (NSString *)moneyString:(NSString *)money addOtherMoneyString:(NSString *)string
{
    NSDecimalNumber *number1 = [self decimalNumberWithString:money];
    NSDecimalNumber *number2 = [self decimalNumberWithString:string];
    number1 = [number1 decimalNumberByAdding:number2];
    //这个方法就是上面把字符串转换成金额的方法,这样方法返回的就是一个金额了,下面都有同样的方法
    return [NSDecimalNumber moneyStringWithString:[number1 stringValue]];
}
  • 计算商品金额的差,额,大数要放在前面的
 + (NSString *)moneyString:(NSString *)money SubtractingOhterMoneyString:(NSString *)string
{
    NSDecimalNumber *number1 = [self decimalNumberWithString:money];
    NSDecimalNumber *number2 = [self decimalNumberWithString:string];
    number1 = [number1 decimalNumberBySubtracting:number2];
    return [NSDecimalNumber moneyStringWithString:[number1 stringValue]];
}
  • 商品总和 单价x数量
 + (NSString *)moneyString:(NSString *)money multiplyingIntegerCount:(NSInteger)count
{
    NSDecimalNumber *number1 = [self decimalNumberWithString:money];
    NSDecimalNumber *number2 = [self decimalNumberWithString:[NSString stringWithFormat:@"%ld", (long)count]];
    number1 = [number1 decimalNumberByMultiplyingBy:number2];
    return [NSDecimalNumber moneyStringWithString:[number1 stringValue]];
}
  • 获得商品单价 商品总和÷个数
+ (NSString *)moneyString:(NSString *)money dividingIntegerCount:(NSInteger)count
{
    NSDecimalNumber *number1 = [self decimalNumberWithString:money];
    NSDecimalNumber *number2 = [self decimalNumberWithString:[NSString stringWithFormat:@"%ld", (long)count]];
    number1 = [number1 decimalNumberByDividingBy:number2];
    return [NSDecimalNumber moneyStringWithString:[number1 stringValue]];
}

以上就是我今天总结的内容了,希望对大家有帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值