如何將樓層函數應用於float或double值以獲取整數。我得到double值:4.4497083717E10 float值:4.4497084E10超出我的函數。我的樓層值爲雙層樓層:4.4497083717E10 Float的底線:4.4497084416E10。是否有底線可能導致整數?樓層函數浮動和雙值
2
A
回答
4
。是否有可能發言的結果是一個整數?
從類型的角度 - 沒有。 Math.floor
被聲明爲返回double
,因此永遠不會返回靜態類型爲int
的東西。
也就是說,該方法的文檔聲明返回的值是等於的整數。所以簡單地將返回的結果轉換爲int
將始終爲您提供您期望的輸出。
(也就是說,假設你的結果是在範圍內。一個double
可以容納更大的數字,一個int
可以代表檢查出Narrowing primitive conversions的技術細節,你可能想越界檢查數據,以確保它總是明智的轉換爲int
。)
1
4.4497083717E10太大而無法成爲int
,您必須將其投射到long
。
鑄造到一個長期保持雙重的整個部分使其與Math.floor
相同的值可以表示爲一個長期。即
long l = (long) Math.floor(4.4497083717E10);
相同
long l = (long) 4.4497083717E10;
System.out.println((int) Math.floor(4.4497083717E10));
System.out.println((long) Math.floor(4.4497083717E10));
System.out.println((long) 4.4497083717E10);
打印
2147483647 -- due to an overflow
44497083717
44497083717
相關問題
- 1. 比較樓層/小區後的浮點數/雙精度比較
- 2. 倒數樓層
- 3. 浮動,雙打和半浮點數
- 4. 層樓高BSP
- 5. 如何在AVX中實現樓層(雙層)?
- 6. 如何在大浮點數上找到樓層?
- 7. 在層樓高RTEMS
- 8. PHP樓層功能
- 9. 字符數據浮動/雙
- 10. 動態層樓高XPath查詢串
- 11. 如何求和樓層序號?
- 12. 降級雙浮動
- 13. 浮動雙列表?
- 14. 如何獲取樓層
- 15. 層樓高Android SDK中
- 16. 雙到位浮動和浮動四捨五入
- 17. 浮動和雙重比較如何?
- 18. Java平等的浮動和雙打
- 19. 浮點型和雙文字模板類中的函數特化
- 20. 作爲兩個雙打總和的雙雙精度浮點數
- 21. 浮點函數返回值
- 22. 浮動和雙 - 有意義的數字 - 尾數POV?
- 23. 紅寶石雙浮動浮標0
- 24. 雙精度浮點數和其他浮點數精度
- 25. 轉換雙浮動在Python
- 26. 轉換型雙[] []浮動
- 27. 雙浮動錯誤 - IE
- 28. C浮點數和雙重比較
- 29. 雙精度和單精度浮點數?
- 30. c中的浮點數和雙精度#
您必須floor'後''申請round'。 – 2012-04-20 09:34:52
@MarkoTopolnik爲什麼要將一個浮點數整數保證表示一個整數已經? – 2012-04-20 09:56:16
@ChristianRau因爲你想要一個'長',這就是'圓'返回。 「double」永遠不會「代表」一個整數,它只是近似於它。正如安德烈·多伊爾(Andrzej Doyle)的回答所解釋的,另一種選擇是簡單地投入「長」。結果是完全一樣的,不同之處只在於你的品味,看起來更清潔。 – 2012-04-20 09:59:41