我不明白为什么结果:
4 / 3 * Math.PI * Math.pow(radio,3)
不同于:
(4 * Math.PI * Math.pow(radio,3)) / 3
我在程序中使用它来计算球体的体积。
答案 0 :(得分:0)
首先检查运营商的优先级。
在您的情况下,优先顺序是:
()> *> /(注意:这个优先级适用于C运算符)
因此,对于上述操作,两种情况的结果必须相同。
我们来吧
案例1:
4 / 3 * Math.PI * Math.pow(radio,3)
Here Math.PI = 3.14
Suppose Math.pow(radio , 3) = 10
In this scenario first multiplication will happen
result = 4*3.14*10 = 125.60000000000001
125.600/3 = 41.86666666666667
案例2:
'(4 * Math.PI * Math.pow(radio,3))/ 3'
首先它将计算()块然后/运算符
即(4 * Math.PI * Math.pow(radio,3))
这里的结果将与以前相同
答案 1 :(得分:0)
首先,为了说明的目的,我们插入一些额外的括号:
此代码:
4 / 3 * Math.PI * Math.pow(radio,3)
相当于
((4 / 3) * Math.PI) * Math.pow(radio,3)
在单词中...首先我们将4除以3,然后将它乘以Pi,然后乘以radio
乘以3的幂。
现在让我们看一下第一个子表达式(4 / 3)
。由于操作数都是整数,这是一个整数除法,它产生一个整数答案。答案是1
。你真正需要的答案是1.33333...
,但这不是一个整数。
如何解决?将数字中的一个或两个更改为double
文字将导致除法被视为浮点(双)除法,并且这将最好地逼近四分之三。
4.0 / 3.0 * Math.PI * Math.pow(radio,3)