Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

単純な四則演算なのですが…(round関数使用)

こんにちは。
現在、最も近い整数を返すround関数を用いて、
System.out.println(Math.round(10*x) /10);
を実行しているのですが、
このxが例えば0.08の場合、
roundによって1/10という結果が得られると思うのですが、実行してみると結果は0となってしまい、この原因が全く分かりません…。

System.out.println(Math.round(10*x))
ですと、確かに結果は1となるので、ここまではうまくいっているらしいのですが…。

これは何故起こり、また、どうすれば1/10という結果が得られるのでしょうか。
よろしくお願いします。

3

回答

79288

閲覧

3件の回答

評価

0

10は何? 0.08は何?
というのを考えてみればいいのではないかと。

roundとかを使う説明しているところ(サイトの・・とか)には、(常にではないだろうけど)注意点としてよく出てくるだろうと思うけど。

10,0.08は何?で気付いてしまうだけより、そんな説明を探してみると、よりシッカリ理解できる(身につく)のではないかと思いますよ。

評価

0

お返事ありがとうございました。
調べたり、自分で色々実行してみた所、
明示的な型変換の(double)を入れてみた所、うまく0.1という結果を得ることができました。
デフォルトではint型になっているんですね(恐らく)

評価

0

# 注意点としてよく出てくるだろう
をよく理解してみれば簡単に?解るでしょうけど、
デフォルトとかではないです。

表現(書き方)が関わってるんですけど。
そこはちゃんと理解しておいた方がいいと思うけどなあ。

>明示的な型変換の(double)を入れてみた
は要らない場所だろうと思うし。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。