ios - NSNumberFormatter 在设备和模拟器上不同

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

最佳答案

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

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

关于ios - NSNumberFormatter 在设备和模拟器上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921281/

相关文章:

swift - 在 Swift 中使用 NSNumberFormatter 格式化货币输入

html - 如何为 Objective-C 编写正则表达式?

ios - Swift IAP SK产品显示错误价格

ios - 使用 NSNumberFormatter 格式化 NSDecimalNumber 时丢失小数零

ios - 在 objective-c 中停止浮点值四舍五入

ios - 使用 NSNumberFormatter 设置 UITextField 最多写入 11 个数字

iOS 应用程序不与动态链接 URL 前缀关联

ios - Swift - 如何将图像保存到数组中并访问它们?

ios - TableView 自定义单元格的麻烦

iOS如何安排任务并在应用程序关闭时随机执行