我从一个数字开始,比方说250.我添加各种数字,但无论何时我添加一个像2,000这样的高数字,它都会正确添加。然后我添加3.新的数字出来5,就像它认为2,000是2.0。我不知道为什么会这样做。
float start = self.amountLabel.text.floatValue;
float changeAmount = self.amountField.text.floatValue;
float newValue;
if (determConfirm == 1) {
newValue = start + changeAmount;
} else {
newValue = start - changeAmount;
}
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:5];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:newValue]];
[[NSUserDefaults standardUserDefaults] setValue:numberString forKey:@"newValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
self.amountLabel.text = numberString;
self.amountField.text = @"0.00";
[self.amountField resignFirstResponder];
答案 0 :(得分:0)
通过查看代码很难猜测,但也许你想要这个:
float newValue = start;
if (determConfirm == 1) {
newValue += changeAmount;
} else {
newValue -= changeAmount;
}
答案 1 :(得分:0)
问题是使用floatValue
将格式化的数字文本转换为数字。 floatValue
仅在文本未格式化(无逗号)时使用,并且使用小数分隔符的句点。
由于您在字段中存储格式化的数字,因此它仅适用于较小的数字和某些区域设置。
将文本上floatValue
的使用替换为用于格式化数字的NSNumberFormatter
。使用它来解析文本并为您提供NSNumber
(然后您可以调用floatValue
)。