美文网首页iOS Developer
【Objective-c】 货币计算类 NSDecimalNu

【Objective-c】 货币计算类 NSDecimalNu

作者: MR_詹 | 来源:发表于2016-11-08 14:42 被阅读72次

    做过支付功能的朋友,也遇到这样的坑:后台返回某件商品的价格或者某笔账单总数的时候,是一个字符串,而字符串是不能直接加减乘除的,我们必须先转化为数据结构类型再计算。看下面一段代码:

        NSString *string = @"123.456";
        NSLog(@"%f=====%.2f",string.floatValue,string.floatValue);
      //输出结果是:123.456001=====123.46
    

    从上面的结果看,虽然有点变化好像没什么影响似的,我们再看下面

        NSString *string = @"12345678910.40";
        NSLog(@"%f=====%.2f",string.floatValue,string.floatValue);
      //输出结果:12345678848.000000=====12345678848.00
    

    这回,输出的结果跟想象中的区别就很大了。我们可以得出这么一些结论
    1、float的有效位数是8位,剩余的随机
    2、float会四舍五入
    这两个弊端是很大的BUG(+--+,项目中就有偶尔出现缺1分钱的BUG)

    “全能乔”早就知道情况的出现,所以封装了NSDecimalNumber类负责货币这种敏感数字的运算,具体的使用方法建议看看这位大神的介绍:
    http://www.jianshu.com/p/4703d704c953

    NSDecimalNumber类设置样式:
    http://www.ithao123.cn/content-8054207.html

    相关文章

      网友评论

        本文标题: 【Objective-c】 货币计算类 NSDecimalNu

        本文链接:https://www.haomeiwen.com/subject/nkbauttx.html