2017-12-28 11 views
-1
let value:Float = 5.678434 
let roundedValue = round(value * 100)/100

のためのラウンドフロートを動作しない5.67または5.68を取得する方法5.6784339はSWIFT 4

フロートroundedValue?

+0

印刷(参照https://stackoverflow.com/questions/588004/is -floating-point-math-broken)ですが、5.6784339ではなく5.68に近い値にする必要があります。正しい変数を印刷してもよろしいですか? –

+0

私はここでも5.68を取得していますが、正しくチェックしているかどうかわかりません。また、 'round'ではなく' roundf'で確認してください。 – Oxthor

+0

十進法でn桁目を四捨五入したい場合は、 'Float'の代わりに[' Decimal'](https://developer.apple.com/documentation/foundation/decimal)を使用してください。 – user28434

答えて

-1
extension Float { 
    func rounded(toPlaces places:Int) -> Float { 
     let divisor = pow(10.0, Float(places)) 
     return (self * divisor).rounded()/divisor 
    } 
} 

let floatNumber:Float = 3.67565676 

print(floatNumber.rounded(toPlaces: 2)) 

//結果が伴う2進浮動小数点数の限られた精度で5.68と異なっていてもよい3.68

+0

これはOPがすでに行っていることであり、拡張メソッドとしてのみ書かれています。あなたの答えは、問題を説明したり、あなたのコードがそれを解決する方法については説明しません。 –

+0

質問はかなりきれいだった "5.67または5.68を得る方法?" –

関連する問題