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