gpt4 book ai didi

ios - UITextField 数字键盘 : dot instead of comma for float values

转载 作者:行者123 更新时间:2023-11-30 12:54:43 25 4
gpt4 key购买 nike

我使用的是从数字键盘填充的文本字段。

问题是,对于很多本地区域格式(例如所有欧洲格式),UITextField 的数字键盘有逗号而不是点,所以每次我写一个十进制数时,UITextField 无法识别十进制逗号及其四舍五入;例如 23,07 变为 23。

我该如何解决这个问题?我想将文本字段固定在美国;是否可以?怎么办?

我使用这个读取值:

var importo = (importoPrevistoTF.text as NSString).floatValue

最佳答案

swift 4

extension String {
static let numberFormatter = NumberFormatter()
var doubleValue: Double {
String.numberFormatter.decimalSeparator = "."
if let result = String.numberFormatter.number(from: self) {
return result.doubleValue
} else {
String.numberFormatter.decimalSeparator = ","
if let result = String.numberFormatter.number(from: self) {
return result.doubleValue
}
}
return 0
}
}
<小时/>
"2.25".doubleValue // 2.25
"2,25".doubleValue // 2.25
<小时/><小时/>

使用 NumberFormatter 的本地化方法:

extension NumberFormatter {
static let shared = NumberFormatter()
}
extension StringProtocol {
var doubleValue: Double? {
return NumberFormatter.shared.number(from: String(self))?.doubleValue
}
}
<小时/>

Playground 测试

// User device's default settings for current locale (en_US)
NumberFormatter.shared.locale // en_US (current)
NumberFormatter.shared.numberStyle // none
NumberFormatter.shared.decimalSeparator // "."
"2.7".doubleValue // 2.7
"2,7".doubleValue // nil
"$2.70".doubleValue // nil

NumberFormatter.shared.numberStyle = .currency
"2.7".doubleValue // nil
"2,7".doubleValue // nil
"$2.70".doubleValue // 2.7


NumberFormatter.shared.locale = Locale(identifier: "pt_BR") // pt_BR (fixed)
"2.7".doubleValue // nil
"2,7".doubleValue // nil
"R$2,70".doubleValue // 2.7

NumberFormatter.shared.numberStyle = .none
"2.7".doubleValue // nil
"2,7".doubleValue // 2.7
"R$2,70".doubleValue // nil

关于ios - UITextField 数字键盘 : dot instead of comma for float values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com