我有一個雙倍的時間間隔,以秒爲單位。有效值爲0.0,0.5,1.0,1.5等。如何安全地將這個double轉換爲int?
現在我需要將此值轉換爲int。但我不能這樣做:
int converted = (int)theDouble;
因爲什麼可能發生的是,我的雙由於浮點錯誤是0.999999999,而不是1.000000000。它只會切斷尾部,我們最終會得到0而不是1.另外,當我的double是0.9時,我想要一個1的整數。當它是1.1時,我希望int爲1。它是1.8,我想INT是2.
有一個round()函數,但Xcode不顯示此文檔。標題只會告訴它返回一個double。所以不是我需要的。
什麼是最安全的方式來獲得該double的close int表示?雖然它是雙倍數,我永遠也不需要比0.5或者一個零碎的數字更高的精度(我不是數學天才,也不知道確切的科學術語)。在math.h
int converted = (int)(round(theDouble));