2017-05-15 26 views
1

swift 3のFloat変数に値を格納していますが、実際に変数からこの値を使用すると精度が失われます。私はそれをプレイグラウンドで試しました。コードの下に検討してください代わりに、152.4(または152.40)の 152.399994Swift 3で浮動小数点精度が失われる

let feetToInchMultiplier: Float = 12 
    let inchToCentimeterMultiplier: Float = 2.54 

func heightInCentimeters(_ feet: Float, inches: Float) -> Float { 
    //Convert in Centemeters 
    let totalInches: Float = (feet * feetToInchMultiplier) + inches 
    let centimeters: Float = totalInches * inchToCentimeterMultiplier 
    return centimeters 
} 

heightInCentimeters(5, inches: 0) 

この問題に直面して誰も私を助けてください場合それは私のように最終的な出力を提供します。前もって感謝します。

答えて

0

浮動小数点変数は常に、浮動小数点数を事前定義して標準浮動小数点数を返します。これは、表示する精度を手動で変更する必要があります。 heightInCentimetersメソッドを下記のように変更してください。

func heightInCentimeters(_ feet: Float, inches: Float) -> Float { 
    //Convert in Centemeters 
    let totalInches: Float = (feet * feetToInchMultiplier) + inches 
    let centimeters: Float = totalInches * inchToCentimeterMultiplier 

    return Float(String(format: "%.2f",centimeters))! 
} 
関連する問題