java--数值类型的转换

数值类型之间的合法转换

数值类型之间的合法转换

1.图中的实心箭头表示无信息丢失的转换,虚箭头表示有可能精度损失的转换。
例如

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

2.当时用上边两个进行计算时要将数值类型转换成相同的才能计算:

  • 如果两个操作数中有一个是double,另一个就会转成double
  • 否则如果两个操作数中有一个是float,另一个就会转成float
  • 否则如果两个操作数中有一个long,另一个就会转成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类型。

警告:如果试图将一个数值从一种类型强制转成另一种类型,而又超出了目标类型的表示范围,结果就截断成一个完全不同的值。例如,(byte)300的实际值为44

猜你喜欢

转载自blog.csdn.net/CUITAO2305532402/article/details/111184245