Java规范示例中的错误?

时间:2015-06-30 17:20:14

标签: java type-conversion primitive

有两种主要的原始转换:

  • 扩大转换;
  • 缩小转化率。

我正在阅读Java SE Specification中有关扩大转换的内容,此处我看到以下图片:

enter image description here

int big = 1234567890;
float approx = big; // good, it's widening conversion (int -> float)
System.out.println(big - (int)approx); // what? (float -> int)

在最后一行代码中,我认为它的缩小转换,我是对的吗?如果我错了,请解释我!提前谢谢。

1 个答案:

答案 0 :(得分:3)

是的, last 行使用缩小转换,这就是需要强制转换的原因。该示例用于证明中间线上的扩展转换丢失了所有信息:

  

此程序打印-46,从而表示在从int类型转换为float类型的过程中信息丢失,因为float类型的值不精确到九位有效数字。