2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【個人的メモ】Javaのデータ型がめんどくさいって話

Last updated at Posted at 2019-06-11

Math.round()がわかんなかった

Progate進めてた時の話

身長(height)と体重(weight)がdouble型で定義されていて、それを使ってBMI(bmi)を計算しなさいってことに。
BMIは整数型なので、計算した値を四捨五入する必要がある。
Math.round()メソッドを使えってことだった。

##最初どうしたか

public static int bmi(double weight,double height){
 int bmi=Math.round(weight/height/height);
 return bmi;
}

こんな感じで書いてた。
Math.round()メソッドで四捨五入したら当然int型になるもんだと思ってた。
しかしエラーを返されちゃう。

##調べてみたら

どうやらMath.round()メソッドで四捨五入した値はlong型になっちゃうようで、int型で使いたい場合は変換しなきゃいけないらしい。
ということで

public static int bmi(double weight,double height){
 int bmi=int(Math.round(weight/height/height));
 return bmi;
}

と書き直した。
これでMath.round()で四捨五入した値がint型になったと思ったら、またエラー。

Pythonと勘違いしてしまい、型変換の方法を間違っていました。

最終的に

public static int bmi(double weight,double height){
 int bmi=(int)Math.round(weight/height/height);
 return bmi;
}

とすることで、ようやくエラー無く処理してくれました。
めでたしめでたし。

という備忘録的メモでした。

##今回の学び

  • Math.round()メソッドで四捨五入したら、long型になっちゃうよ
    • Math.round()メソッドにはMath.round(float)とMath.round(double)があり、(float)の場合はint型に、(double)の場合はlong型になっちゃうよ
  • Javaでデータ型の変換をするときは「(データ型)変数名;」ってしないとダメだよ

ということでした。

###参考にしたページ

色々を対処法を探していた時にまったくおんなじ状況の質問をしていたteratailのページを見つけて、事なきを得ました。
URL:https://teratail.com/questions/114663

2
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?