Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java规范示例中的错误?_Java_Type Conversion_Primitive - Fatal编程技术网

Java规范示例中的错误?

Java规范示例中的错误?,java,type-conversion,primitive,Java,Type Conversion,Primitive,有两种主要的原语转换: 拓宽转化 缩小转换范围 我正在阅读关于加宽转换的文章,在这里我看到了以下图片: int big = 1234567890; float approx = big; // good, it's widening conversion (int -> float) System.out.println(big - (int)approx); // what? (float -> int) 在最后一行代码中,我认为它正在缩小转换范围,对吗?如果我错了,请解释

有两种主要的原语转换:

  • 拓宽转化
  • 缩小转换范围
我正在阅读关于加宽转换的文章,在这里我看到了以下图片:

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

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

是的,最后一行使用了窄化转换,这就是为什么需要强制转换。该示例用于演示中线上的加宽转换会丢失信息,仅此而已:

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