NSNumberFormatter在设备和模拟器上有所不同

时间:2013-02-17 12:53:35

标签: ios nsnumberformatter

我有一个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)上,键盘上有逗号,但逗号后的值始终为零。 enter image description here

编辑:这有效

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];

1 个答案:

答案 0 :(得分:1)

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

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

希望有所帮助。