Java 数值类型转换 - Java 编程入门

在 Java 程序中,经常需要将一种类型转换成另一种类型。如下为数值类型的合法转换:

数值类型之间的合法转换

图中 6 个实心箭头,表示无信息丢失的转换,3 个虚箭头,表示可能有精度损失的转换。如下:

int n = 123456789;
float f = n; // f 的值为 1.23456792E8

123 456 789 是一个大整数,它所包含的位数比 float 类型所能表达的位数多。当将这个整形数值转换为 float 时,将会得到同样大小的结果,但却丢失了一定的精度。

当使用两个整型进行二元操作时(如 n + f),会先将两个操作数转换为同一类型,然后在进行计算。

如果两个操作数中有一个是 double 类型,另一个操作数就会转换为 double 类型。

否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。

否则,如果其中一个操作数是 long 类型,另一个操作数将会转换为 long 类型。

否则,两个操作数都将被转换为 int 类型。

int 类型会在有必要的时候自动转换为 double 类型,但有时也需要将 double 转换为 int。这就需要强制类型转换了。语法是在圆括号中给出想要转换的目标类型,后面跟要转换的变量名。如下:

double x = 9.997;
int nx = (int) x; // nx 的值为 9

强制类型转换会通过截断小数部分将浮点数转换为整数。

如果想要对浮点数进行舍入运算,以便得到最接近的整数,就要用到 Math.round 方法:

double x = 9.997;
int nx = (int) Math.round(x); // nx 的值为 10

round 方法返回的结果为 long 类型,所以还需要使用强制类型转换。

Loading...


Run