我有一个 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
也为你做了正确的事情。
关于ios - NSNumberFormatter 在设备和模拟器上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921281/