2011-02-14 107 views
2
#include<iostream> 

using namespace std; 

int main(int argc, char** argv){ 
     float result; 
     result=(340/101); 
     cout<<"Result="<<result; 

} 

在這個代碼結果是= 3,我很好奇爲什麼呢?什麼是預防這個原因,它可以看到一個小問題,但它真的不贊成我的數據分析程序中的結果。爲什麼結果輸出是整數,甚至結果被定義爲float?

編輯:謝謝你的答案,我正在嘗試下面的代碼,它也給我3,所以這就是爲什麼我現在混淆我很清楚。

result=(float)(340/101); 

感謝所有

回答

3

340是整數並且101是整數,所以340/101執行整數除法。當分配的結果被分配到result時,它將轉換爲float

您需要投一個到一個浮點型爲具有浮點除法進行的:

result = static_cast<float>(340)/101; 

或只使用一個浮動文本:

result = 340.0f/101; 
+0

「你需要投一個一整數類型...「你的意思是拋出浮動,對吧? ;) – fredoverflow 2011-02-14 00:17:41

2

這是由於整數除法,如除法運算兩個操作數均爲整數。任一鑄號碼之一爲float,或利用浮點語法:

result = (340.0/101.0) 
4

由於表達(340/101)評估獨立的它的周圍環境。 int/int總是會產生一個int。如果您稍後將int存儲在float變量中,則沒有任何區別。

1

在C++中,(340/101)被認爲是孤立的。由於/的兩個操作數均爲int s,因此編譯器會生成整數除法的代碼。然後,由於您將該結果分配給float,因此它會生成代碼以將生成的int轉換爲float

爲了讓浮點除法,你需要確保(至少)一個操作數到/開始作爲一個float(或double),如:float result = 340.0f/101.0f;

相關問題