如何将UITextField中的数字转换为浮点数?
如何将UITextField中的数字转换为浮点数?
我有这段代码,其中长度和宽度被相乘,但我需要它们是'Float'而不是'整数'。
// 正方形的输出开始
@IBOutlet weak var LengthForSquare: UITextField!
@IBOutlet weak var WidthForSquare: UITextField!
@IBOutlet weak var ResultForSquare: UILabel!
// 正方形的输出结束
@IBAction func AnswerForSquarePressed(_ sender: Any) {
ResultForSquare.text = ((LengthForSquare.text! as NSString).floatValue * (WidthForSquare.text! as NSString).floatValue ).description
}
每次我尝试将'integerValue'转换为'float'时都会显示错误。如果有人可以帮助我解决这个问题,那就太好了。
问题的原因是:在将UITextField中的字符串转换为浮点数时,如果字符串中包含普通数字(即不是货币等特殊格式),不需要使用数字格式化器。但是,如果用户输入的数字可能使用不同的格式,例如"3,14"或"1.234,56",则需要使用数字格式化器来处理。
解决方法是:使用Float()初始化器将输入的字符串转换为浮点数。在初始化器后面加上"?? defaultValue",可以为转换失败的情况提供默认值。这样,转换后的浮点数将始终包含一个值,而不需要进行解包。
如果不使用默认值,转换后的浮点数将需要进行解包才能访问其中的值。
可能需要向苹果提交一个问题报告,要么是将文档中指明只支持英式数字分隔,要么是更新初始化器以根据当前区域设置自动处理不同格式的数字分隔符。