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

将String转换为在Apple的Swift中浮动

将String转换为在Apple的Swift中浮动

梦里花落0921 2019-11-27 10:30:33
我正在尝试转换从UITextField中获取的数字(我认为它实际上是字符串),并将其转换为浮点数,因此我可以将它们相乘。我有两个UITextfield声明如下:@IBOutlet var wage: UITextField@IBOutlet var hour: UITextField当用户按下UIButton时,我想计算用户赚取的工资,但是我不能,因为我需要先将其转换为浮动工资,然后才能使用它们。我知道如何通过执行以下操作将它们转换为整数:var wageConversion:Int = 0wageConversion = wage.text.toInt()!但是,我不知道如何将它们转换为浮点数。
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

迅捷2.0+

现在,在Swift 2.0中,您可以使用Float(Wage.text)返回Float?类型的方法。比下面返回的解决方案更清晰0。


如果出于某种原因想要一个0无效的值,则Float可以使用Float(Wage.text) ?? 0该值,如果无效则返回0该值Float。


旧解决方案

解决此问题的最佳方法是直接投射:


var WageConversion = (Wage.text as NSString).floatValue

我实际上也创建了一个extension更好地使用它的方法:


extension String {

    var floatValue: Float {

        return (self as NSString).floatValue

    }

}

现在,您可以呼叫var WageConversion = Wage.text.floatValue并允许分机为您处理网桥!


这是一个很好的实现,因为它可以处理实际的浮点数(使用进行输入.),并且还有助于防止用户将文本复制到您的输入字段(12p.34或什至12.12.41)中。


显然,如果Apple确实floatValue在Swift 中添加了,则会抛出异常,但与此同时可能会很好。如果他们稍后添加它,那么只需修改扩展名,您只需要做的就是删除扩展名,一切将无缝进行,因为您已经在调用了.floatValue!


另外,变量和常量应以小写字母开头(包括IBOutlets)


查看完整回答
反对 回复 2019-11-27
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

因为例如在世界的某些地区,使用逗号代替小数。最好创建一个NSNumberFormatter来将字符串转换为float。


let numberFormatter = NSNumberFormatter()

numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle

let number = numberFormatter.numberFromString(self.stringByTrimmingCharactersInSet(Wage.text))


查看完整回答
反对 回复 2019-11-27
?
慕妹3242003

TA贡献1824条经验 获得超6个赞



斯威夫特1


这是Paul Hegarty在2015年斯坦福大学CS193p课程上的表现:


wageConversion = NSNumberFormatter().numberFromString(wage.text!)!.floatValue

您甚至可以创建一个计算属性,而不必每次都这样做


var wageValue: Float {

        get {

            return NSNumberFormatter().numberFromString(wage.text!)!.floatValue

        }

        set {

            wage.text = "\(newValue)"

        }

    }


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 541 浏览

添加回答

举报

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