无论是double还是float ,CPU位数都是有限的!
而浮点数,理论上是无限长的!
所以普通的浮点类型,进行运算就会出现精度问题。
解决方案:使用 NSDecimalNumber 类,替代double。
- (void)handleMinusBtn{
UITextField *tf = self.amountView.itemView.inputView.textField;
NSDecimalNumber *minNum = [NSDecimalNumber decimalNumberWithString:self.model.minAmount];
NSDecimalNumber *currNum = [NSDecimalNumber decimalNumberWithString:tf.text];
NSDecimalNumber *stepNum = [NSDecimalNumber decimalNumberWithString:[self getStepValueStr]];
NSDecimalNumber *newNum = [currNum decimalNumberBySubtracting:stepNum];
//若新值比最小值小,则直接展示最小值
if( [newNum compare:minNum] == NSOrderedAscending ){
newNum = minNum;
}
tf.text = newNum.stringValue;
}
网友评论