3.7 厘米到英寸的转换

现在假设有一个以厘米为单位的值,我们想将其转换为与之最接近的英寸数。你可能很想这样编写代码:

  1. inch = cm / CM_PER_INCH; // 语法错误

但这将导致编译错误,会出现类似于“Bad types in assignment: from double to int”这样的错误消息。这是因为右边是浮点数,而左边是整数变量。

要将浮点值转换为整数,最简单的方式是使用类型转换(type cast),类型转换因将值从一种类型塑造或铸造成另一种类型而得名。类型转换的语法是将类型名放在括号内,并将其用作运算符。

  1. double pi = 3.14159;
  2. int x = (int) pi;

运算符 (int) 会将它后面的值转换为整数。在这个示例中,x 将被设置为 3。与整数除法一样,转换为整数时总是向下圆整,即便小数部分为 0.999999(或 -0.999999)也是如此。换言之,将直接丢弃小数部分。

类型转换的优先级高于算术运算。在下面的示例中,先将 pi 的值转换为整数,然后再执行乘法运算,因此结果为 60.0,而不是 62.0。

  1. double pi = 3.14159;
  2. double x = (int) pi * 20.0;

请务必牢记这一点。下面的代码演示了如何将厘米数转换为英寸数:

  1. inch = (int) (cm / CM_PER_INCH);
  2. System.out.printf("%f cm = %d in\n", cent, inch);

转换运算符后面的括号使得除法运算先执行,然后再进行类型转换。因此除法运算的结果将向下圆整;我们将在下一章介绍如何将浮点数圆整为与之最接近的整数。