2013-03-20 30 views
0
#include <iostream> 
using namespace std; 

int main(){ 
float const PI = 3.1415926; 

int radius = 4; 
int peri = 0; 
int area = 0; 

peri =(float) (PI * 2)* radius; 
area = (float) PI * (radius * radius); 

cout << "Radius is " << radius << endl; 
cout << "Perimeter is " << peri << endl; 
cout << "Area is " << area << endl; 

return 0; 
}; 

及周邊地區並未轉換爲浮動,總是收到警告「轉換從float到int」爲int似乎是什麼問題..將從浮動

+1

因爲這正是你在做什麼。 peri和area被聲明爲整數,你可能希望它們是浮動的,所以把它們聲明爲浮動。 – Rich 2013-03-20 02:39:34

+1

你不能在'int'中正確存儲一個'float',而不是在一個圓孔中插入一個方形的釘子。將'peri'和'area'聲明爲'float'。 – congusbongus 2013-03-20 02:39:43

回答

1

如果你真的想截斷周邊和麪積爲整數,你應該明確地這樣做:

peri=static_cast<int>(2*PI*radius); 
area=static_cast<int>(PI*radius*radius); 

否則,你會得到一個警告,它看起來像一個錯誤的人誰讀你的代碼。

+2

你的意思是static_cast 不是正確的? – taocp 2013-03-20 02:47:27

+1

youre correct !! – 2013-03-20 02:59:20

+0

對,它應該是一個強制轉換爲int。我已更正了代碼。 – joshuanapoli 2013-03-20 17:03:09