gpt4 book ai didi

java - java中从double到int可能出现的有损转换错误

转载 作者:行者123 更新时间:2023-11-30 06:10:21 26 4
gpt4 key购买 nike

我们已经知道java中Math.lang()函数的返回类型是double

class Lossy {
public static void main(String args[]) {
int sum;
sum=Math.pow(2,3);
System.out.println (sum);
}
}

现在,此语句可能会导致有损转换错误,因为变量的类型为 int,并且 Math.pow() 返回一个 double 值,即 8.0 这很公平。

现在看看下面的代码,进行一些更改。

class Lossy {     
public static void main(String args[]) {
int sum=2;
sum+=Math.pow(2,3);
System.out.println (sum);
}
}

现在,如果我们编译此代码,我们不会收到可能发生转换错误的错误,而我们应该会收到此错误,因为我们在 integer 变量中存储了 double 值。此外,当我们打印该值时,它显示一个整数值。为什么?

最佳答案

在第一个代码中,您将 double 值分配给整型变量。因为 double 值需要 8 个字节,而整数只需要 4 个字节的内存。我们无法将 8 字节值存储到 4 字节变量中。这就是为什么它显示可能丢失转换错误。

class Lossy
{
public static void main(String args[])
{
int sum;
sum=Math.pow(2,3); //Assigning double value to a int variable. its an Error
System.out.println (sum);
}
}

在第二个示例中,您不是简单或直接将值分配给整数变量。但您使用了添加和赋值运算符 (+=),其功能如下:

sum+=Math.pow(2,3) 等于sum = sum + Math.pow(2,3);

当您执行上述操作时,JVM 会对函数 Math.pow() 执行自动类型转换(double 到 int)或解析,并将函数的返回值转换为 int,而汇编。所以它工作得很好。我希望你明白。谢谢!

关于java - java中从double到int可能出现的有损转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50392638/

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