当设计到金钱的计算.但是利用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];;
}