为了账号安全,请及时绑定邮箱和手机立即绑定

UITextField的数字键盘:浮点值用点而不是逗号

UITextField的数字键盘:浮点值用点而不是逗号

侃侃尔雅 2020-02-02 15:34:16
我正在使用从数字键盘填充的textField。麻烦的是,在许多本地格式(例如,全欧洲)中,UITextField的数字键盘使用逗号而不是点,因此每次我写一个十进制数字时,UITextField都无法识别十进制逗号并对其进行舍入。例如23,07变成23。我该如何解决?我想将textField设置为固定在美国;可能吗?怎么样?我用这个读取值:var importo = (importoPrevistoTF.text as NSString).floatValue
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

SO Answer的潜在重复,使用NSNumberFormatter


Swift示例:


let number = NSNumberFormatter().numberFromString(numberString)

if let number = number {

    let floatValue = Float(number)

}

示例(目标-C):


NSNumber *number = [[NSNumberFormatter new] numberFromString: numberString];

float floatValue = number.floatValue;


查看完整回答
反对 回复 2020-02-02
?
PIPIONE

TA贡献1829条经验 获得超9个赞

没有人真正直接解决过这个问题。


也就是说,十进制分隔符是语言环境的约定。


iOS支持根据特定语言环境格式化数字。


如果您仅在给定的语言环境中工作,那么一切都应该正常工作。键盘应接受带有正确小数点分隔符的数字。


例如,如果您在欧洲的大多数国家/地区,则需要输入逗号作为小数点分隔符。在这些国家/地区输入点是错误的。这些国家之一的人不会这样做,因为这是错误的小数点分隔符。欧洲用户将知道使用逗号作为小数点分隔符,而您无需执行任何操作。


如果您在美国,则需要使用句点。在美国使用逗号将是错误的。


显示十进制数字的方式是使用数字格式器。创建数字格式化程序时,默认情况下它将使用当前语言环境。


如果需要将包含十进制数字的字符串从一种语言环境转换为另一种语言环境,则应使用2个数字格式器。在源语言环境中使用格式化程序将字符串转换为浮点数。然后,使用带有目标语言环境的格式化程序,将数字转换为输出格式的字符串。


只需在默认的当前语言环境中创建一个数字格式化程序,然后创建第二个数字格式化程序并将其语言环境显式设置为您要使用的另一种语言环境即可。


查看完整回答
反对 回复 2020-02-02
  • 3 回答
  • 0 关注
  • 1036 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信