1. ホーム
  2. java

[解決済み] 2つのintの除算で別のintではなくfloatを生成させるには?

2022-01-31 14:39:42

質問

ブルース・エッケルズ氏の別の演習で、速度の計算をする。 v = s / t ここで、s と t は整数です。 どうすれば除算で浮動小数点が出るようになりますか?

class CalcV {
  float v;
  float calcV(int s, int t) {
    v = s / t;
    return v;
  } //end calcV
}

public class PassObject {

  public static void main (String[] args ) {
    int distance;
    distance = 4;

    int t;
    t = 3;

    float outV;

    CalcV v = new CalcV();
    outV = v.calcV(distance, t);

    System.out.println("velocity : " + outV);
  } //end main
}//end class

解決方法は?

2つのオペランドのうち、どちらかを先にfloatにキャストすればよいのです。

v = (float)s / t;

キャストは分割より優先順位が高いので、分割の前に行われます。

これは、オペランドのどちらかが浮動小数点型であれば、もう一方のオペランドが整数型であっても浮動小数点演算になる、という規則があるためです。 Java 言語仕様書、§4.2.4 §15.17