2013-08-07 207 views
0

我做了以下數學計算 - 浮點數

float years = (1/31536000) * 883102.00; 

,我得到年= 0000000

而實際的答案是0.0.28

上什麼可能會錯誤的任何建議?

+2

嘗試在每個數字上添加'f'後綴 – user2485710

+2

@ user2485710'1f'無效C++。 –

+0

@PascalCuoq確定我的意思是'1.0f',爲每個數字加上'.0f'。 – user2485710

回答

3

而應該做

float years = (1.0/31536000.0) * 883102.00; 

float years = (1.0/31536000) * 883102.00; 

可以正常工作。你的第一個數字被視爲整數。

+0

竅門 - 感謝 – Rajeshwar

1

1是一個int。然後編譯器會假設你對ints有興趣,然後1/3153600變成0.只需在.1中加1,你的calc就可以工作了。

float years = (1.0/31536000) * 883102.00; 
1

第一項是int,因此四捨五入爲0。試試這個:

float years = (1.00/31536000.00) * 883102.00 
+1

小數點後面爲什麼只有兩個零?你不應該再添加幾個以保證安全嗎? –

+0

這裏沒有演員。第一項的類型爲'int',第二項的類型爲'int',因此它們的商具有類型'int'。該值是**截斷**,不是四捨五入。 –

+0

@PeteBecker:「舍入」用於表示修改結果以適應目標格式(例如,IEEE 754-2008 4.3),並且可以使用各種舍入模式,例如舍入爲零。 –

1

(31536000分之1)將產生出0是乘以任何數將爲0 使分子或分母浮動ATLEAST一個(如1.0或31536000.0)

1

883102.0/31536000將做到這你想要什麼。

1

因爲整數司

(1/31536000) 

的小數位獲得截斷,結果爲「零」。 你必須添加一個點:

(1.0/31536000.0) or (1./31536000.) 
3

只是不要

float years = 883102.00/31536000; 

這將節省計算。 既然你是潛水1的東西,然後乘。 或者只是將1設置爲1.00