1. ホーム
  2. java

Doubleを小数点以下1桁に丸める kotlin: 0.044999から0.1まで

2023-08-19 23:21:31

質問

Double変数があります。 0.0449999 で、これを小数点以下1桁に丸めたいのですが 0.1 .

私はKotlinを使用していますが、Javaの解決策も参考になります。

val number:Double = 0.0449999

この2つの解法で小数点以下1桁を取得してみました。

  1. val solution = Math.round(number * 10.0) / 10.0
  2. val solution = String.format("%.1f", number)

問題なのは、両方のケースで 0.0 が得られることです。 0.04 から 0.0 . 小数点以下を全て取って丸めるわけではありません。

0.1を求めたいのですが。 0.045 -> 0.05 -> 0.1

どのように解決するのですか?

最後に、私は何をしましたか Andy Turner が提案したように、小数点以下 3 桁に丸め、次に 2 桁、そして 1 桁に丸めました。

回答 1:

val number:Double = 0.0449999
val number3digits:Double = String.format("%.3f", number).toDouble()
val number2digits:Double = String.format("%.2f", number3digits).toDouble()
val solution:Double = String.format("%.1f", number2digits).toDouble()

回答2

val number:Double = 0.0449999
val number3digits:Double = Math.round(number * 1000.0) / 1000.0
val number2digits:Double = Math.round(number3digits * 100.0) / 100.0
val solution:Double = Math.round(number2digits * 10.0) / 10.0

結果 :

<ブロッククオート

0.045 → 0.05 → 0.1

注意: 本来あるべき姿ではないことは分かっていますが、特殊なケースですべての小数を考慮して切り上げる必要がある場合もあるので、もしかしたら誰かがこれを役に立つと思うかもしれません。