自动类型转换(隐式转换)
当 int 类型的值被赋给一个 double 类型的变量时,Java 会自动进行转换,这个过程也称为拓宽类型转换,因为 double 的表示范围(精度和大小)比 int 大,所以不会丢失信息。

核心规则:
int是 32 位整数。double是 64 位浮点数。- 转换时,Java 会将
int的值放入double的“整数部分”,然后在小数部分补上.0。
示例代码:
public class IntToDoubleExample {
public static void main(String[] args) {
int myInt = 100;
// 1. 直接赋值,Java会自动将int转换为double
double myDouble = myInt;
System.out.println("原始 int 值: " + myInt);
System.out.println("转换后的 double 值: " + myDouble);
System.out.println("myDouble 的类型是: " + ((Object)myDouble).getClass().getSimpleName());
// 再看一个例子
int anotherInt = -42;
double anotherDouble = anotherInt;
System.out.println("\n原始 int 值: " + anotherInt);
System.out.println("转换后的 double 值: " + anotherDouble);
}
}
输出结果:
原始 int 值: 100
转换后的 double 值: 100.0
myDouble 的类型是: Double
原始 int 值: -42
转换后的 double 值: -42.0
强制类型转换(显式转换)
你也可以使用强制类型转换运算符 (double) 来明确地告诉编译器你想要进行转换,虽然在这种情况下,自动转换已经足够,但显式转换可以让代码的意图更清晰,或者在复杂的表达式中避免潜在的编译错误。

语法:
double_variable = (double) int_value;
示例代码:
public class ExplicitIntToDouble {
public static void main(String[] args) {
int number = 255;
// 使用强制类型转换
double convertedNumber = (double) number;
System.out.println("原始 int 值: " + number);
System.out.println("强制转换后的 double 值: " + convertedNumber);
}
}
输出结果:
原始 int 值: 255
强制转换后的 double 值: 255.0
关键点与注意事项
精度问题(从 double 转 int 时)
虽然你的问题是 int 转 double,但了解反向转换的精度问题非常重要,当从 double 转换回 int 时,会丢失小数部分。

double myDouble = 99.7; int myInt = (int) myDouble; // 强制转换,会截断小数部分 System.out.println(myDouble); // 输出 99.7 System.out.println(myInt); // 输出 99,小数部分.7被丢弃了
范围问题
int 的范围是 -2,147,483,648 到 2,147,483,647。
double 的范围要大得多,可以表示极大和极小的数,任何 int 值都可以无损地转换为 double,你不必担心 int 值超出 double 的表示范围。
在表达式中的转换
当 int 和 double 在一个算术表达式中混合运算时,int 会自动提升为 double,整个表达式的计算结果会是 double 类型。
int a = 10; double b = 3.14; // a + b 中,a 会被临时转换为 10.0,然后进行 10.0 + 3.14 的运算 double result = a + b; // 结果是 13.14,类型是 double System.out.println(result); // 输出 13.14
| 转换方式 | 语法 | 描述 | 推荐度 |
|---|---|---|---|
| 自动类型转换 | double d = i; |
Java 自动完成,安全、简洁。 | ⭐⭐⭐⭐⭐ (首选) |
| 强制类型转换 | double d = (double) i; |
代码意图更明确,但在此场景下非必需。 | ⭐⭐⭐ (可读性考虑) |
将 int 转换为 double 是一个简单且安全的过程。直接赋值(自动转换)是最佳实践,因为它代码更短,可读性更高。
