Javaのコーディングについての質問です。

あるサイズのものをある単位で分割するケースを想定してください。
float width=250f;//対象の幅
float devide=2.5f;//分割するサイズ
これを使い、「いくつに分割できるか」を計算する場合、私の場合は以下↓のようなコードになります。 
int number = (int)(double)((width/devide));
のですが、これは個人的にあまりスマートなやり方ではないと思っております。
割り算の結果がfloatで、しかし求めたい答えがintの場合のスマートなコーディング方法について、アイデアをいただきたく思います。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/06/23 13:47:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:nattow No.1

回答回数102ベストアンサー獲得回数27

ポイント100pt

このケースでは double へのキャスト(の明示)は不要です。

int number = (int)(width/devide);
id:shinp

手元で確認したところ、理屈は不明ですが正しい計算結果が返ってきました。

(devideを0.3とかにしてもきちんと計算されてました)Java自体の仕様を勘違いしていたようですね。ありがとうございました。

2011/06/23 13:51:10
  • id:Mook
    端数はどうするのでしょうか。

    整数に切り捨てるのであればキャストでも問題ないと思いますし、toInterger や toInt
    などの変換メソッドが用意されているクラス(MathTool など)を利用する方法もあります。
  • id:shinp
    端数はとりあえず必要ない計算をしているものとお考えください。
    Javaですと、実はint num=((Float)(width/range)).intValue();という方法も採れるのですが、より一層スマートではないと思い、質問した次第です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません