2016-07-07 4 views
-1

プリミティブ型のキャストは、ほとんどの場合、浮動小数点値を整数に変換するために使用されます。これを行うと、浮動小数点値の小数部は単純に切り捨てられます。なぜですか?ドキュメントからプリミティブデータ型のキャストはなぜ浮動小数点値を切り捨てるのですか?

public class Chaz { 
      public static void main(String[] args) { 
      double x = 1234.5678; 
      long g = (long)x; 
      System.out.println(g); 
    } 
} 
+0

longは整数なので浮動小数点を保持できない –

+4

何を求めていますか?長い人が小数部を持つことができない理由を尋ねていますか?または、丸め、0.5以上の丸め、または丸めが必要なときの例外のスローではなく、常に切り捨て(=切り捨て)する理由を尋ねていますか? –

答えて

2

長いデータ・タイプは、64ビットの2の補数の整数です。署名された 長い-2^63の最小値とそれが店舗小数精度値をdoesnot 2^63-1

の最大値を有します。を参照してくださいhere

0

longは、長い整数を表します。問題はデータの損失だと理解していますが、整数は非整数を格納できません。

一つは、このように、多数の乗算を保存することを決定することができます。

public class Chaz { 
      public static void main(String[] args) { 
      double x = 1234.5678; 
      long g = (long)(x * 10000); 
      System.out.println(g); 
    } 
} 

、その後gが実際に10000倍本当の価値であることを知っています。または、最も近い整数が必要な場合は、それを丸めることができます。私たちは追加の情報なしではわかりませんが、これが正常で期待される動作であることを実際には知ることができます。

関連する問題