let value:Float = 5.678434 let roundedValue = round(value * 100)/100
のためのラウンドフロートを動作しない5.67または5.68を取得する方法5.6784339はSWIFT 4
フロートroundedValue?
let value:Float = 5.678434 let roundedValue = round(value * 100)/100
のためのラウンドフロートを動作しない5.67または5.68を取得する方法5.6784339はSWIFT 4
フロートroundedValue?
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
これはOPがすでに行っていることであり、拡張メソッドとしてのみ書かれています。あなたの答えは、問題を説明したり、あなたのコードがそれを解決する方法については説明しません。 –
質問はかなりきれいだった "5.67または5.68を得る方法?" –
印刷(参照https://stackoverflow.com/questions/588004/is -floating-point-math-broken)ですが、5.6784339ではなく5.68に近い値にする必要があります。正しい変数を印刷してもよろしいですか? –
私はここでも5.68を取得していますが、正しくチェックしているかどうかわかりません。また、 'round'ではなく' roundf'で確認してください。 – Oxthor
十進法でn桁目を四捨五入したい場合は、 'Float'の代わりに[' Decimal'](https://developer.apple.com/documentation/foundation/decimal)を使用してください。 – user28434