[問題] 取整數問題[會自動進位]

看板java作者 (大豪院邪鬼)時間17年前 (2008/10/23 12:30), 編輯推噓5(501)
留言6則, 6人參與, 最新討論串1/3 (看更多)
如題 舉例而言 double d1 = 4.9999; //想要抓出整數位4 可利用 int c1 = (int)d1; //如此c1可得我想要的值4 但是. 當小數點位數太多時 例如 d1=4.99999999999999999999; 那麼以我上面的寫法 得到的數值會變5 也就是自動進位了 實際上 我要處理的數據大概是這樣的形式: d2=0.1234567899999999999999999 我要抓出第8位數.也就是8這個數[前幾位抓到也沒關係] 我先把d2乘以10的8次方 變成12345678.99999999999999999 想抓出整數12345678 但至今試過許多方法.仍然會取成12345679 想請教一下 該如何處理這樣的問題呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.14.44

10/23 12:32, , 1F
Math.floor()?
10/23 12:32, 1F

10/23 12:34, , 2F
to樓上 一樣呢 後面9太多 他還是會自動進位
10/23 12:34, 2F

10/23 12:41, , 3F
用BigDecimal運算?
10/23 12:41, 3F
TO樓上 我有試著用過 雖然BigDecimal可以在取比較精準的位數下進行加 減 乘 除的運算 但似乎也無法使用什麼方法將我要的整數位取出來 甚至最後輸出前,轉成DOUBLE.還是一樣9會自動進位

10/23 15:01, , 4F
用String暴力解?(逃)
10/23 15:01, 4F
很神奇的 我將d1轉string.仍然會自動進位 ※ 編輯: hahakyo 來自: 140.112.14.44 (10/23 16:24)

10/23 17:03, , 5F
失真法 d1=d1-0.5; 但這只是轉移問題成如何判斷"過多" @@
10/23 17:03, 5F

10/24 00:07, , 6F
自己定義個class 整數、小數拆開作,都用整數處理呢
10/24 00:07, 6F
文章代碼(AID): #18__t-8C (java)
討論串 (同標題文章)
文章代碼(AID): #18__t-8C (java)