数学表达式给出了java应用程序中的错误答案

时间:2014-02-15 14:50:57

标签: java math

我创建了一个简单的程序来计算球体的体积。 但是以下代码行有问题

double volume=(4/3)*PI*radius*radius*radius;

产生错误的答案。但如果我改变为

double volume=PI*radius*radius*radius*4/3;

现在它给出了正确答案。

但根据代数,这两个方程式都完全没问题。那么为什么我得到第一个等式的错误答案呢?

3 个答案:

答案 0 :(得分:3)

4/3被解释为整数除法,这意味着地板 - 您必须明确说明浮点除法:(double) 4/34.0/3

答案 1 :(得分:2)

4/3 == 1。整数除法。

尝试4.0/3表示浮动,或者在结尾处除以3。

答案 2 :(得分:0)

这是因为(4/3)是整数除法,并且通过截断等于1。你应该写:

double volume = (double) 4/3 *PI*radius*radius*radius;

double volume = 4.0/3 *PI*radius*radius*radius;