0

誰かがinty=(int)x;の行で型キャストがどのように機能するかを説明できますか?ありがとうございました

public class typecast
{
 public static void main(String [] args)
 {
  double x=10.5;
  int y=(int) x;
  System.out.println("x="+x);
  System.out.println("y="+y);
 } 
}
4

2 に答える 2

5

型キャストは、ナローイング型変換を実行します。正確な変換は、次のようにdouble値によって異なります。

  • 値の範囲内にある場合はint、ゼロに向かって丸められます。
  • それが範囲外であるか「Inf」値である場合、変換は符号に応じて Integer.MIN_VALUEまたはを与えます。Integer.MAX_VALUE
  • それが「NaN」値である場合、変換はゼロになります。

参照:JLS 5.1.3

注:「ゼロに向かって丸める」は次のように定義されます。

「Javaプログラミング言語は、浮動小数点値を整数(§5.1.3)に変換するときにゼロへの丸めを使用します。これは、この場合、数値が切り捨てられたかのように機能し、仮数ビットを破棄します。ゼロへの丸めは、その結果で選択されます。無限に正確な結果に最も近く、大きさが大きくないフォーマットの値。

于 2012-10-06T06:15:37.887 に答える
0

この特定のケースでは、double(変数x)を取得し、その値をint(変数y)に割り当てようとすると、コードはコンパイルされません。したがって、型をdoubleからintにキャスト(変換)するようにコンパイラーに明示的に指示する必要があります。その場合、この特定のケースでは、切り上げ/切り下げではなく、小数部分が削除されると思います。私はその最後の点について間違っている可能性があります。

于 2012-10-06T06:12:46.213 に答える