2017-01-11 100 views
-4

我在C++中使用的代碼是:浮點變量不存儲小數

float y; 
y=360/100; 
cout<<y; 

輸出是3。 甚至,如果我不輸出y,而是將其用於一個函數像左( y),取值爲3而不是3.6。但是,如果我定義y = 360.0/100,它工作正常。

順便說一句,left()是我們的CS教授製作的一個函數。左(x)將方向向左改變x度的角度。基於標誌的包。

+0

使用'y = 360f/100;' – Axel

+0

這是一個*整數*除法存儲在一個浮點型變量中。結果是3,無論存儲在哪裏 –

+0

在C和兄弟姐妹(和堂兄弟以及其他遠親,甚至是被收養的孩子)中,整數除法產生一個整數結果。 –

回答

2

這是定義語言的方式。您將int除以int,因此將執行計算,結果爲int,給出3(截斷,而不是舍入)。

然後,您將3存儲到float,給出3.0

如果您希望使用float s執行劃分,請至少使參數float之一(例如, 360f/100。通過這種方式,他們的其他論點將被轉換爲之前的float執行除法。

360/100f會工作得很好,但我認爲儘可能早地說清楚這是一個浮點計算,而不是一個完整的計算。這是人爲的考慮,而不是技術上的考慮。

(注意360.0實際上是一個double,雖然使用將正常工作。該司將作爲double來執行,然後轉換爲一個用於float分配結果)。

0

360/100計算在整數算術之前它分配給float

重做到360f/100是我最喜歡的解決方法。

最後這幾天float適用於不瞭解現代芯片組工作原理的乳蛋餅食客,女孩和民間人士。改爲使用double類型 - 可能會更快 - 和360.0/100