2011-05-23 96 views
28

我在做別的事情,但一切都出來了零,所以我做了這個簡約例如,輸出仍爲0司在C++中工作不正常

#include <iostream> 

int main(int argc, char** argv) 
{ 
    double f=3/5; 
    std::cout << f; 
    return 0; 
} 

我缺少什麼?

回答

45

你錯過了3和5是整數的事實,所以你得到的是整數除法。爲了使編譯器執行浮點除法,讓他們中的一個實數:

double f = 3.0/5; 
+2

整數與浮點的劃分看起來像是一段經文;我知道這是給我的。 – zenzelezz 2011-05-24 12:35:53

9

試試這個:

double f = 3.0/5.0; 

這應該解決您的問題

5

嘗試把一個.0之一後,除數。這會將它們轉換爲浮點文字。

17

它並不需要.0,你也可以做3./53/5.3e+0/53/5e-00xCp-2/5或者......有隻需要一個指標涉及這樣編譯器知道它應該執行劃分爲浮點。

另一種可能性:double f=double(3)/5。這是更多的打字,但它毫無疑問,你在做什麼。

或者乾脆用double f=.6,也做的伎倆......

2

您正在使用的整數。你可以做很多事情來讓你的常量像leftaroundabout狀態一樣加倍,但是這並不是很好的清潔。這很難閱讀和混淆。如果你想3和5讓他們3.0和5.0。如果他們被迫讀取你的代碼,每個人都會知道你的意思。他/她所陳述的大部分內容都需要您瞭解C/C++以及如何使用浮點數來存儲頭部或尾部。

+0

嗯,我認爲很明顯'0xCp-2/5'不會被認真考慮! ...但至於使用3.0:這是一個品味問題。我個人不喜歡這樣寫,因爲在科學中,小數點後的數字有限數字暗示了測量值等方面的某種不準確,所以當我看到3.0時,我總是認爲3±.05和3.0/5.0對我來說是.6±.01。這不是雙精度!我更喜歡'3./5'。 – leftaroundabout 2011-05-23 23:03:05

+0

我的文章的重點是讓閱讀更容易。 3./5看起來不像標準的數學公式。你需要了解你的觀衆:我不認爲這張海報(如果他們與一個真正的和不同的int有關的問題)是爲高層次的科學應用程序設計的,所以我認爲越簡單越好。 – 2011-05-23 23:24:39