作者tatibana31 (橘三十一)
看板java
標題Re: [問題] 取整數問題[會自動進位]
時間Thu Oct 23 23:08:00 2008
※ 引述《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