iOS Double/Float 类型的数据计算精度问题

问题:

在iOS开发中,我们会经常碰到使用浮点型接收后台返回的数据,这个时候往往就会遇到精度转换问题,尤其是在开发金融类APP的时候:

解决:

使用 NSDecimalNumber 将float/double数据转化成NSDecimalNumber 类型的对象进行 +、-、*、/ 运算。

 -(double)decimalNumber:(double)num1 num2:(double)num2  {
  
    NSDecimalNumber *deciNum1 = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f",num1]];
    
    NSDecimalNumber *deciNum2 = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%f",num2]];
    
    NSDecimalNumber *deciNum3 = [deciNum1 decimalNumberBySubtracting:deciNum2];
    
    return deciNum3.doubleValue;
}
// 调用:
double result = [self  decimalNumber: 2.01 num2: 2]; // 结果为 0.01

有关NSDecimalNumber的运算

 - decimalNumberBySubtracting: n1 - n2,返回 n1 - n2 的结果值
 - decimalNumberByMultiplyingBy:n1 * n2,
 - decimalNumberByDividingBy:n1 / n2,
 - decimalNumberByAdding:n1 + n2,
 - compare:比较 n1 和 n2,返回比较结果;

你可能感兴趣的:(iOS Double/Float 类型的数据计算精度问题)