我在做別的事情,但一切都出來了零,所以我做了這個簡約例如,輸出仍爲0司在C++中工作不正常
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
我缺少什麼?
我在做別的事情,但一切都出來了零,所以我做了這個簡約例如,輸出仍爲0司在C++中工作不正常
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
我缺少什麼?
你錯過了3和5是整數的事實,所以你得到的是整數除法。爲了使編譯器執行浮點除法,讓他們中的一個實數:
double f = 3.0/5;
試試這個:
double f = 3.0/5.0;
這應該解決您的問題
嘗試把一個.0
之一後,除數。這會將它們轉換爲浮點文字。
它並不需要向是.0
,你也可以做3./5
或3/5.
或3e+0/5
或3/5e-0
或0xCp-2/5
或者......有隻需要一個指標涉及這樣編譯器知道它應該執行劃分爲浮點。
另一種可能性:double f=double(3)/5
。這是更多的打字,但它毫無疑問,你在做什麼。
或者乾脆用double f=.6
,也做的伎倆......
您正在使用的整數。你可以做很多事情來讓你的常量像leftaroundabout狀態一樣加倍,但是這並不是很好的清潔。這很難閱讀和混淆。如果你想3和5讓他們3.0和5.0。如果他們被迫讀取你的代碼,每個人都會知道你的意思。他/她所陳述的大部分內容都需要您瞭解C/C++以及如何使用浮點數來存儲頭部或尾部。
嗯,我認爲很明顯'0xCp-2/5'不會被認真考慮! ...但至於使用3.0:這是一個品味問題。我個人不喜歡這樣寫,因爲在科學中,小數點後的數字有限數字暗示了測量值等方面的某種不準確,所以當我看到3.0時,我總是認爲3±.05和3.0/5.0對我來說是.6±.01。這不是雙精度!我更喜歡'3./5'。 – leftaroundabout 2011-05-23 23:03:05
我的文章的重點是讓閱讀更容易。 3./5看起來不像標準的數學公式。你需要了解你的觀衆:我不認爲這張海報(如果他們與一個真正的和不同的int有關的問題)是爲高層次的科學應用程序設計的,所以我認爲越簡單越好。 – 2011-05-23 23:24:39
整數與浮點的劃分看起來像是一段經文;我知道這是給我的。 – zenzelezz 2011-05-24 12:35:53