Math.PIS 定义为 double PI = 3.141592653589793;
当您执行任何一个变量为 double 的操作时,另一个变量会自动提升为 double。由于第 4/3 段,您的两个示例中的差异即将到来。
在大括号中使用时,它被视为 int 并得到 1,而在另一个示例中,4 乘以 double 值得到 double,然后再除以 3,得到 1.333333。
总结:volume=(Math.PI*Math.pow(raio,3))*(4/3);
评估为
volume = (392.6990816987241)*(4/3)
volume = (392.6990816987241) * (1) //<--int division
volume = 392.6990816987241
而volume=(Math.PI*Math.pow(raio,3))*4/3;
被评估为
volume = (392.6990816987241) *4/3
volume = 1570.7963267948965/3 //division of double by int
volume = 523.5987755982989
如果您注意到,第二个结果是1.33333
第一个结果的倍数。
如果在第一个示例中,如果您将一个参数更改为双精度,例如 4.0 或 3.0 或两者,即
volume=(Math.PI*Math.pow(raio,3))*(4.0/3)
or volume=(Math.PI*Math.pow(raio,3))*(4/3.0)
or volume=(Math.PI*Math.pow(raio,3))*(4.0/3.0)
您将得到与示例 2 相同的结果。
希望这可以帮助。