看板 java 關於我們 聯絡資訊
如題 舉例而言 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
LPH66:Math.floor()? 10/23 12:32
hahakyo:to樓上 一樣呢 後面9太多 他還是會自動進位 10/23 12:34
drinks:用BigDecimal運算? 10/23 12:41
TO樓上 我有試著用過 雖然BigDecimal可以在取比較精準的位數下進行加 減 乘 除的運算 但似乎也無法使用什麼方法將我要的整數位取出來 甚至最後輸出前,轉成DOUBLE.還是一樣9會自動進位
tatibana31:用String暴力解?(逃) 10/23 15:01
很神奇的 我將d1轉string.仍然會自動進位 ※ 編輯: hahakyo 來自: 140.112.14.44 (10/23 16:24)
fuQQ:失真法 d1=d1-0.5; 但這只是轉移問題成如何判斷"過多" @@ 10/23 17:03
MonyemLi:自己定義個class 整數、小數拆開作,都用整數處理呢 10/24 00:07