Float
エリクサーのaを小数点以下2桁に丸めようとしています。
数値があれば12.555
、丸め関数を返したいのですが12.56
もともとFloat.round
はこれが欲しいと思っていたのですが、この関数が必ずしも欲しい答えを返すとは限りません。
例えば...
iex()> Float.round(12.555, 2)
12.55
間に合わせの機能でこれを実行できることは知っていますが、もっと良い解決策があるはずだと思いました。
私の現在の解決策は...
iex()> round(12.555 * 100) / 100
12.56
これでうまくいきますが、私が言ったように、もっと良い解決策があるかどうかを知りたかっただけです。
前もって感謝します
浮動小数点数の動作方法のため、丸めアルゴリズムの制御などの精度が必要な場合は、Decimalなどのライブラリを使用する必要があります。
12.555
|> Decimal.from_float()
|> Decimal.round(2)
出力:
#Decimal<12.56>
その後Decimal.to_string/2
、印刷やなどの機能を使用できますがDecimal.to_float/1
、これto_float/1
も不正確な操作であり、失敗する可能性があることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加