繁体   English   中英

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

[英]NSNumberFormatter different on device and simulator

我有一个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];

我不认为问题是你的输出。 问题是你得到的输入-[NSString doubleValue ]。 该方法不符合用户的语言环境。

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

希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM