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

关于 浮点数 精度丢失问题

作者: 风___________ | 来源:发表于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