为什么简单计算的值会在java中产生错误的结果?它溢出了吗?

Mar*_*tin 0 java

这是我的代码的样子:

double test = (21757952*100)/63290718;
Log.i("TAH", "test = " +test);
Run Code Online (Sandbox Code Playgroud)

它显示"test = -33"

为什么价值错了?它溢出了吗?

Sur*_*tta 5

整数溢出发生在那里.既然你没有说那些是双打的.

尝试

double test = (21757952.0 * 100) / 63290718;
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

创建一个值(或所有值)double(或指示为double)确保操作应该使用双精度.