在UIKeyboardTypeDecimalPad小数点不能在数学计算中使用(Decimal poi

2019-07-30 10:20发布

我使用的键盘类型: UIKeyboardTypeDecimalPad两个UITextField对象。 当试图执行加法,我得到这取决于当前的语言环境不同的结果:

案例1:美国格式:小数点出现. 如预期。 如果我添加12.3(文本字段1)+ 12.3(文本字段2),答案是24.6。 这就是我想要的。 但:

案例2:埃及格式:小数点显示为, 。 如果我重复同样的计算,答案是24小数部分被忽略。 是否有一个修复?

注意:我用[textField.text floatValue]方法。

Answer 1:

由于floatValue确实非本地化的扫描,它需要一个“美制”。

您可以使用NSScanner对象从一个字符串数值的局部扫描。

请参阅: 字符串编程指南:扫描仪

注意最后一段:

本土化

扫描仪基础上的一些语言环境,它指定的值表示语言和公约的扫描行为。 NSScanner只使用语言环境的定义小数点分隔符(由名为NSDecimalSeparator关键给出)。 您可以通过使用localizedScannerWithString创建与用户的区域设置一个扫描仪:,或明确设置的语言环境中使用的setLocale:。 如果您使用的是没有指定区域的方法,该扫描仪采用缺省的语言环境值。

另请参见: 如何做字符串转换在Objective-C?

例:

NSScanner *scanner = [NSScanner localizedScannerWithString:textField.text];
double mynumber;
if([scanner scanDouble: &mynumber]){
  // do something
};


Answer 2:

您可以使用:

double number = [[self.myTextField.text stringByReplacingOccurencesOfString:@”,” withString:@”.”] doublevalue];

这是确定所有的语言。



文章来源: Decimal point in UIKeyboardTypeDecimalPad can't be used in mathematical calculation