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