我创建了一个简单的程序来计算球体的体积。 但是以下代码行有问题
double volume=(4/3)*PI*radius*radius*radius;
产生错误的答案。但如果我改变为
double volume=PI*radius*radius*radius*4/3;
现在它给出了正确答案。
但根据代数,这两个方程式都完全没问题。那么为什么我得到第一个等式的错误答案呢?
答案 0 :(得分:3)
4/3
被解释为整数除法,这意味着地板 - 您必须明确说明浮点除法:(double) 4/3
或4.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;