Java 计算后存储负值的双变量

Java 计算后存储负值的双变量,java,Java,我试图回答以下代码段产生错误结果的问题。我假设一些数据处理不当,但无法得到正确答案 int v=1000000000; System.out.println(Math.round(3*v*Math.cos(Math.toRadians(30)))); 输出:-1121474575 预期输出:2598076211整数。最大值为2147483647,但v*3为3000000000,由于整数溢出而导致负数 如果要处理该大小的整数,必须使用longInteger。最大值为2147483647,但v*3

我试图回答以下代码段产生错误结果的问题。我假设一些数据处理不当,但无法得到正确答案

int v=1000000000;
System.out.println(Math.round(3*v*Math.cos(Math.toRadians(30))));
输出:-1121474575


预期输出:2598076211

整数。最大值
为2147483647,但
v*3
为3000000000,由于整数溢出而导致负数


如果要处理该大小的整数,必须使用
long

Integer。最大值为2147483647,但
v*3
为3000000000,由于整数溢出而导致负数


如果你想处理这个数量级的整数,你必须使用
long

好的。我用双精度的v得到了结果。非常感谢,好的。我用双精度的v得到了结果。非常感谢你。