Re: [問題] parse 浮點數

看板java作者 (??????)時間18年前 (2007/12/17 17:32), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《ling07 (神風特攻隊)》之銘言: : String s="1.56789"; : float num=0; : num=Float.parseFloat(s); : 我知道可以用上面的方法把字串s轉成小數 : 但有沒有方法可以控制小數點的位數 : 例如假設s為1.56789 : 如何控制在parse後,只要1.56 : 先感謝了 <(_ _)> 另一種方法: 使用 Regular Expression /* s - 浮點數字串 n - 小數位數 */ String truncate(String s, Integer n){ Pattern p = Pattern.compile("([+-]?\\d+)(.(\\d+))?"); Matcher m = p.matcher(s); if(m.find()){ String newStr = m.group(1); String fraction = m.group(3); if(fraction != null){ if(fraction.length() > n){ return newStr + "." + fraction.substring(0, n); }else{ return newStr + "." + fraction; } }else{ return newStr; } }else{ return s; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.75.28.114

12/17 19:21, , 1F
其實你的 pattern string 有 bug XD
12/17 19:21, 1F

12/18 08:20, , 2F
不好意思,請問我的BUG發生在哪? 真的十分感謝指教。
12/18 08:20, 2F

12/18 11:40, , 3F
後面 (.(\\d+)) 那邊,因為 "." 本身是 wild pattern
12/18 11:40, 3F

12/18 11:42, , 4F
所以應該是 (\\.(\\d+)) 這樣
12/18 11:42, 4F
文章代碼(AID): #17Pa8-lR (java)
討論串 (同標題文章)
文章代碼(AID): #17Pa8-lR (java)