今天在學校做上機課,編寫了一個輸入圓半徑然後計算圓的周長面積以及對應球體體積的小程序。本來只是小試牛刀,沒想到出了一個百思不得其解的問題,代碼如下:
#include <stdio.h>
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
const double pi = 3.14;
double r;
double c;
double s;
double v;
cout << "Please input a number to be the radius: ";
cin >> r;
c = 2 * pi * r;
s = pi * r * r;
v = 4 / 3 * pi * r * r * r; //注意此行
cout << c << endl;
cout << s << endl;
cout << v << endl;
system("pause");
return 0;
}
此時輸出的v值似乎自動忽略了前面的 4/3……如果將4改成4.0或者3改成3.0則輸出正常!百思不得其解,求大神解答~~
因為沒有給4和3數據類型,默認的4,3都是整形,所以相除的話,結果是1,1*任何數都是它本身,所以沒用
加上4.0,或者3.0以後表示把它強制轉換為浮點型,所以結果是小數