美文网首页
关于 浮点数 精度丢失问题

关于 浮点数 精度丢失问题

作者: 风___________ | 来源:发表于2018-04-10 16:29 被阅读9次

    错误:(一串.899999999999)~

    NSString *money = @"111";
    Double moneyDou = money.doubleValue;
    Double moneyDouChange = @(moneyDou).doubleValue;
    # 99.899999999999 ~
    

    解决:用NSDecimalNumber + NSString ~ (不要用number double float 进行计算~)

    # 转化
    NSString *money = @"111";
    NSDecimalNumber *decimalNumber = [NSDecimalNumber decimalNumberWithString: money];
    # 加
    decimalNumber = [decimalNumber decimalNumberByAdding: decimalNumber];
    # 减
    decimalNumber = [decimalNumber decimalNumberBySubtracting: decimalNumber];
    # 乘
    decimalNumber = [decimalNumber decimalNumberByMultiplyingBy: decimalNumber];
    # 除
    decimalNumber = [decimalNumber decimalNumberByDividingBy: decimalNumber];
    # 比较
    NSOrderedSame(=) NSOrderedAscending(<) NSOrderedDescending(>)
    [decimalNumber compare:self: decimalNumber]
    # 显示
    NSLog(@"%@ 元", decimalNumber);
    

    此文写的很简洁---iOS中NSDecimalNumber使用
    此文也很简洁---iOS高精度数值计算

    相关文章

      网友评论

          本文标题:关于 浮点数 精度丢失问题

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