java中从double到int的可能有损转换错误
我们已经知道java中java中从double到int的可能有损转换错误,java,operators,Java,Operators,我们已经知道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,这很公平 现在查
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);
}
}
现在,如果我们编译这段代码,我们不会得到一个可能的转换错误,我们应该得到这个错误,因为我们在一个
整数
变量中存储了一个双精度值。此外,当我们打印值时,它会显示一个整数值。为什么?在第一个代码中,您为整数变量指定了一个双精度值。因为double value需要8个字节,而integer只需要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);
}
}
在第二个示例中,您不是简单地或直接地将值赋给整型变量。但是您使用了add and assign操作符(+=),其功能如下:
sum+=Math.pow(2,3)等于sum=sum+Math.pow(2,3)强>
如果您喜欢上面的方法,JVM会对函数Math.pow()执行自动类型转换(double to int)或解析,并在编译时将函数的返回值转换为int。所以它工作得很好。我希望你能理解。谢谢 但我认为java中不允许从double隐式转换为int。请浏览以下链接以供参考:-