3

我有一个 UITextField,使用此代码,在底部的标签上打印值并对其进行格式化。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setUsesGroupingSeparator:NO];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:2];
NSNumber *calcolo = [NSNumber numberWithDouble:[value1 doubleValue]-[self.textfield.text doubleValue]];
formattedString = [formatter stringFromNumber:calcolo];
self.label.text = formattedString;

在模拟器(美国)上,该值显示正确。在设备 (IT) 上,键盘上有逗号,但逗号后面的值始终为零。 在此处输入图像描述

编辑:这有效

NSNumber *temporaryValue1 = [formatter numberFromString:[NSString stringWithFormat:@"%@",value1]];
NSNumber *temporaryTextField = [formatter numberFromString:self.textField.text];
NSNumber *calcolo = [NSNumber numberWithFloat:([temporaryValue1 floatValue] - [temporaryTextField floatValue])];
formattedString = [formatter stringFromNumber:calcolo];
4

1 回答 1

1

我不认为问题是你的输出。问题是您从-[NSString doubleValue] 获得的输入。该方法不尊重用户的语言环境。

您应该能够使用您制作的格式化程序将其转换self.textField.text为正确尊重语言环境的数字。或者您可以考虑使用NSDecimalNumbers,特别是如果这是货币(看起来像?)。然后NSDecimalNumber有一种方法+decimalNumberWithString也可以为您做正确的事情。

于 2013-02-17T13:47:41.503 回答