2013-02-17 75 views
2

我有一个UITextField,使用此代码,打印底部标签上的值并格式化它。NSNumberFormatter不同于设备和模拟器

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

,而不是setDecimalStyle,并设置diigits的数量等[尝试[numberFormatter setPositiveFormat:@“### 0。##”]; – 2013-02-17 13:42:54

回答

1

我不认为这个问题是你的输出。问题是你从-[NSString doubleValue得到的输入]。该方法不尊重用户的区域设置。

您应该可以使用您制作的格式化程序将self.textField.text转换为适当的区域设置。或者你可以考虑使用NSDecimalNumber,特别是如果这是货币(看起来像?)。然后NSDecimalNumber有一个方法+decimalNumberWithString它也适合你。

希望有所帮助。

+0

谢谢!很棒!我在我的问题上添加了工作代码 – Vins 2013-02-17 14:42:17

+0

@Vins这就是我在回答你的早期问题时所要做的 - http://stackoverflow.com/questions/14913269/ios-replace-char-in-uitextfield – rmaddy 2013-02-17 16:08:34

+0

@rmaddy是的,其实我已经听取了你的建议:) – Vins 2013-02-17 17:29:52

相关问题