看板 java 關於我們 聯絡資訊
※ 引述《hahakyo (大豪院邪鬼)》之銘言: : 如題 : 舉例而言 : 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 : 想請教一下 該如何處理這樣的問題呢? : 感謝 好吧....說實在的,我不清楚你要的邏輯是啥?但是.....我剛用String轉 完全沒有進位問題,程式碼如下: double number = 0.1234567899999; System.out.println(String.valueOf(number).substring(0,10)); 我會捉到的東西是 0.12345678,螢幕也是這樣顯示,so....小數點下第八位 對String而言是第10個character....捉了就中了.... 您要不要再試試?(其實最主要還是要看您需要解題的邏輯長怎樣,不然用暴力法對單 一個案根本沒有意義....) 搞不好NumberFormat這個class就可以解您的問題也說不定.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.107.41
hahakyo:您可以抓的到是因為您小數點下的9不夠多@@ 太多就會進位 10/23 23:19
hahakyo:不過後來有用其他方法 暫時解決問題了@@" 感謝 10/23 23:26
userControl:有人可以問完問題,解出來就閃人的嗎= = 10/24 01:09
hahakyo:to樓上 不好意思 我沒那個意思 忽略說明了 和下篇類似方法 10/24 12:00