java-数値型変換

数値タイプ間の法的な変換

 

数値タイプ間の法的な変換

1.図の実線の矢印は、情報が失われない変換を示し、破線の矢印は、精度が失われる可能性のある変換を示します。
例えば

int a = 123456789;  
float b = a; // b = 1.23456792E8

2.上記の2つの計算を使用する場合、計算するには数値型を同じに変換する必要があります。

  • 2つのオペランドの一方がdoubleの場合、もう一方はdoubleに変換されます
  • それ以外の場合、2つのオペランドの一方がfloatの場合、もう一方はfloatに変換されます
  • それ以外の場合、2つのオペランドの一方が長い場合、もう一方はlongに変換されます
  • それ以外の場合は、両方のオペランドがint型に変換されます

強制型変換

doubleからintなどの強制的な型変換では、一部の情報が失われる可能性があります。
強制型変換の構文は、変換するターゲット型を括弧で囲み、その後に変換する変数名を指定します。例えば:

double c = 9.993;
int d = (int)c;//9
d为9,强制类型转换通过截取小数点部分将浮点型【包括单精度和双精度】转换成整型。
  •  

浮動小数点型を丸めて最も近い整数型を取得する場合は、この場合、Math.roundメソッドを使用する必要があります。

double c = 9.993;
int d = (int)Math.round(c);//10
  •  

現在、dの値は10です。roundを使用する場合でも、強制型変換が必要です。roundメソッドによって返される型はlong型であるため、情報が失われる可能性があるため、long型は次の方法でしか変換できません。明示的な型強制変換。int型に変換されます。

警告:あるタイプから別のタイプに値を強制しようとしたときに、その値がターゲットタイプの範囲を超えると、結果は完全に異なる値に切り捨てられます。たとえば、(バイト)300の実際の値は44です。

 

おすすめ

転載: blog.csdn.net/CUITAO2305532402/article/details/111184245