2017-07-07 39 views
2

我做了一个计算球体体积的程序。
因此,当我在我的程序中试用这个公式“(4/3)* 3.14 * pow(radius,3)”时,它返回的值非常不准确。然后我试图输出的“4/3”返回的值,它只是在情况下,如果它是重要的返回值1计算球体积的程序中的奇怪错误

值: - 编译:MinGW64 - IDE:VS代码 - OS:赢10 64位

这是我的代码:

#include<iostream> 
#include<math.h> 

using namespace std; 

int main(){ 
    float radius, v; 
    cout<<"Enter value of radius";cin>>radius; 
    v = (4/3)*3.14*pow(radius, 3); 
    cout<<"volume of sphere: "<<v<<endl; 
    system("pause");return 0; 
} 
+4

4/3产生一个整数,而不是浮点数。 –

+0

我以为有很多重复的东西,但没有找到好的东西... – Walter

+1

顺便说一句,如果你关心效率,你应该避免使用'pow()'作为小整数,尤其是如果它们是在编译时已知。计算3球体积的最有效方法是“4.188790204786391 * r * r * r”,这只是3次乘法。 – Walter

回答

1

表达4/3执行整数除法,并且将导致1(它导致任何小数的截断)。你应该执行浮点数分区。

v = (4.0/3.0)*3.14*pow(radius, 3); 
4

答案是1,因为,4和3是整数,并且在C++整数由整数分割产生另一个整数,所以4/3 = 1

但是纠正,所有需要do是这样的, 将整数更改为浮点十进制数,例如4可以写成4.0代替。

(4.0/3)*3.14*pow(radius,3) 

这就是所有,你很好去。