2016-10-13 64 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'' –