2016-10-13 26 views
1

如何将磅转换为磅小数?在Swift中将磅转换为磅小数(2.2)

例如,如果用户输入1.8磅,我希望能够将其转换为1.5磅所以我可以做一些计算。

下面的代码有两个问题。

1-当用户进入小于10(例如1.9)盎司因为我通过10.

2-它只返回小数盎司乘以盎司它仅适用,它不返回整个数量(磅)。

func poundsToDecimals(pounds:Double)->Double{ 
    let ounces = Double(pounds % 1) 
    let decimals = ounces/16 * 10 
    return decimals 
} 

print(poundsToDecimals(1.4)) //prints... 0.25 
+1

我不认为这是有意义的对待输入“pounds.ounces”作为*双*,这应该是一个字符串(否则1.10磅<1.8磅的数值)。你将如何转换1.2345? - 或者使用Swift 3的'Unit/NSMeasurement'。 –

+0

@ Martin R - 对于如何使用字符串进行转换,我有点困惑,你想介绍一下这方面的更多内容吗?谢谢 –

+1

这确实是一个糟糕的用户体验。如果我输入1.5磅,我的意思是相当于1磅8盎司,而不是1磅5盎司。美国没有人(其他人使用我们的愚蠢系统?)意味着1磅5盎司,当他们键入1.5磅。 – rmaddy

回答

2

解决您的第一个问题试图将数字转换成字符串,然后把它分解了,像这样:

func poundsToDecimals(pounds: Double) -> Double { 
    let numberAsString = String(pounds) 
    var numbers = numberAsString.components(separatedBy: ["."]) 

    let seperatedPounds = Double(numbers[0])! 
    let ounces = Double(numbers[1])! 
    let decimals = ounces/16 * 10 

    return decimals 
} 

能否请您进一步指定您的第二个问题。如果你想要多返回一个值,你通常会这样做。

func poundsToDecimals(pounds: Double) -> (Double, Double) { 
    let numberAsString = String(pounds) 
    var numbers = numberAsString.components(separatedBy: ["."]) 

    let seperatedPounds = Double(numbers[0])! 
    let ounces = Double(numbers[1])! 
    let decimals = ounces/16 * 10 

    return (decimals, seperatedPounds) 
} 

希望帮助

+0

@ benhofmann - 什么是'16.2'?我在Swift 2.2和3.0中测试了你的代码,我得到这个错误:''String'类型的值没有成员'components'' –

+1

sry我添加了它来测试我校正的东西上面aswer的代码 – benhofmann

+0

我找不到'components'我在文档中的任何地方。我得到错误:'类型'字符串'的值没有成员'components'' –