iOS double类型精度问题以及计算问题

   

   当设计到金钱的计算.但是利用double类型数据会不稳定.

1:控制double类型的精度

    double abc = 0.1 - 0.01 - 0.00001009;

    NSNumberFormatter *nf = [[NSNumberFormatteralloc ]init];

    [nf setMaximumIntegerDigits:8];

    NSNumber *number = [nfnumberFromString:[NSString stringWithFormat:@"%.8lf",abc]];

    NSLog(@"number is ---%lf",[numberdoubleValue]);


2:对于double类型不损失精度的计算方法

-(CGFloat)addreeBackMoneyWithAmount:(CGFloat)amount ToMoney:(CGFloat)toMoney

{

    NSString *amountStr = [NSString stringWithFormat:@"%.08lf",amount];

    NSString *toMoneyStr = [NSString stringWithFormat:@"%.08lf",toMoney];

    

    NSDecimalNumber *amountNum = [NSDecimalNumber decimalNumberWithString:amountStr];

    NSDecimalNumber *toMoneyNum = [NSDecimalNumber decimalNumberWithString:toMoneyStr];

    double xiaofee = 0.001210000;

    NSDecimalNumber *feeNum = [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%.8lf",xiaofee]];

    NSDecimalNumber *resultNum = [amountNum decimalNumberBySubtracting:toMoneyNum];

    NSDecimalNumber *subTracFeeNum = [resultNum decimalNumberBySubtracting:feeNum];

    

    return [subTracFeeNum doubleValue];;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值