gpt4 book ai didi

java - 在 JAVA 中向 2D 短数组元素添加一个短路给出错误

转载 作者:行者123 更新时间:2023-12-03 07:16:02 25 4
gpt4 key购买 nike

下面的代码给出了以下错误:

错误:C:\Users\Laptop\algs4\hello\Main.java:8:可能会损失精度

发现:整数

必填:简短

import java.util.* ; 
import java.math.* ;
import java.io.* ;
public class Main{
public static void main(String[] args){
short[][] arr = new short[1][2];
short val = 9 ;
arr[0][0] = arr[0][0] + val ;
}
}

但是下面没有报错。

import java.util.* ; 
import java.math.* ;
import java.io.* ;
public class Main{
public static void main(String[] args){
short[][] arr = new short[1][2];
short val = 9 ;
arr[0][0] += val ;
}
}

这可能是什么原因?

最佳答案

如下:

    arr[0][0] = arr[0][0] + val ; 

两个参数首先被提升为int,进行加法,结果隐式缩小为short。这可能会导致精度损失,从而导致错误。

第二个版本:

    arr[0][0] += val ; 

defined by the Java Language Specification相当于

    arr[0][0] = (short)((int)arr[0][0] + (int)val); 

换句话说,这就像进行了显式强制转换一样,因此没有错误。

您可以通过添加显式强制转换在第一个版本中实现相同的效果:

arr[0][0] = (short)(arr[0][0] + val); 

关于java - 在 JAVA 中向 2D 短数组元素添加一个短路给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com