美文网首页iOS-Objective-C
关于OC中的精度计算NSDecimalNumber

关于OC中的精度计算NSDecimalNumber

作者: 追沐 | 来源:发表于2017-08-31 17:53 被阅读105次

//NSDecimalNumber是NSNumber的子类,是苹果针对浮点型计算时存在精度计算误差的问题而提供
的一个类

计算相关

NSString *str1 = @"100.90";
NSString *str2 = @"100.09";

NSDecimalNumber *decimal1 = [NSDecimalNumber decimalNumberWithString:str1];
NSDecimalNumber *decimal2 = [NSDecimalNumber decimalNumberWithString:str2];

//加
NSDecimalNumber *addDecimal = [decimal1 decimalNumberByAdding:decimal2];
NSLog(@"%@",addDecimal);

//减
NSDecimalNumber *subtractDecimal = [decimal1 decimalNumberBySubtracting:decimal2];
NSLog(@"%@",subtractDecimal);

//乘
NSDecimalNumber *multiplyDeciaml = [decimal1 decimalNumberByMultiplyingBy:decimal2];
NSLog(@"%@",multiplyDeciaml);

//除
NSDecimalNumber *dividDecimal = [decimal1 decimalNumberByDividingBy:decimal2];
NSLog(@"%@",dividDecimal);

//次方运算
NSDecimalNumber *raisingDecimal = [decimal1 decimalNumberByRaisingToPower:0];
NSLog(@"%@",raisingDecimal);

//10次方
NSDecimalNumber *multiplyingByPowerOf10Decimal = [decimal1 decimalNumberByRaisingToPower:10];
NSLog(@"%@",multiplyingByPowerOf10Decimal);

NSString和double转换

/*
 *double ---> NSString
 */
- (NSString *)decimalNumberWithDouble:(double)conversionValue {
    NSString *doubleString     = [NSString stringWithFormat:@"%lf",conversionValue];
    NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
    return [decNumber stringValue];
}
/*
 *NSString ---> double
 */
- (double)StringChangeToDoubleForJingdu:(NSString *)textString {
    if (textString == nil || [textString isEqualToString:@""]) {
        return 0.0;
    }
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    return  [[formatter numberFromString:textString]doubleValue];
}

相关文章

  • 关于OC中的精度计算NSDecimalNumber

    //NSDecimalNumber是NSNumber的子类,是苹果针对浮点型计算时存在精度计算误差的问题而提供的一...

  • NSDecimalNumber精度计算

    场景: 我们在做金钱计算的时候会遇到一个问题,就是精确的问题,许多项目尤其是电商类项目都会涉及到,就是当我们对价格...

  • iOS中需要谨慎对待8.2这个数字

    咱们在开发中为了防止浮点数有精度问题,特意有NSDecimalNumber进行计算,来解决精度问题。 但是在开发中...

  • iOS NSDecimalNumber 精度计算

    在iOS开发中,和货币价格计算相关的,需要注意计算精度的问题。即使只是两位小数,也会出现误差。使用float类型运...

  • 价格计算的精度

    如果用float或者double计算精度不准确的话,可用NSDecimalNumber进行加减乘除

  • NSDecimalNumber 高精度的计算

    参考:iOS 数字精准计算之NSDecimalNumber - 简书 留个记录~~

  • iOS 之NSDecimalNumber的使用

    NSDecimalNumber简介苹果针对浮点类型计算精度问题提供出来的计算类,基于十进制的科学计数法来计算,同时...

  • NSDecimalNumber 介绍

    NSDecimalNumber是NSNumber的不可变子类。苹果针对浮点型计算时存在精度计算误差的问题而提供的一...

  • 2019-08-14

    NSDecimalNumber是NSNumber的不可变子类。苹果针对浮点型计算时存在精度计算误差的问题而提供的一...

  • 链式编程之科学计算

    前段时间因为经常遇到数值的计算,本来用➕➖✖️➗。但是遇到精度问题,所以必须得用NSDecimalNumber类,...

网友评论

    本文标题:关于OC中的精度计算NSDecimalNumber

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