Re: [J2SE] 進行浮點數運算時如何四捨五入至小數第 …

看板java作者時間18年前 (2007/10/09 16:52), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/17 (看更多)
※ 引述《ogamenewbie (._.)》之銘言: : ※ 引述《thinkniht ()》之銘言: : : 標題: [J2SE] 進行浮點數運算時如何四捨五入至小數第幾位 : : 時間: Tue Oct 9 09:06:30 2007 : : 在進行數學運算時 : : 如果型態是浮點數的話 : : 如何對運算結果做四捨五入到特定小數位數 : : 例如四捨五入至小數點後第一位、第二位等等 : : 書上我只看到用Math.round四捨五入到整數位數 : : 不知道有沒有別的方法可以四捨五入到小數位數 : : -- : : ◆ From: 218.170.69.229 : : 推 ogamenewbie:numberformat? 10/09 09:41 : : 推 archerlin:import java.math.BigDecimal 詳見 http://0rz.tw/620Oc 10/09 11:09 : : 推 archerlin:BigDecimal b = new BigDecimal(Double.toString(d)); 10/09 11:24 : : → archerlin:d = b.divide(new BigDecimal("1"), scale, 10/09 11:26 : : → archerlin: BigDecimal.ROUND_HALF_UP).doubleValue(); 10/09 11:27 : : → archerlin:類似這樣...(d為欲四捨五入的double, scale為小數位數) 10/09 11:28 : : 推 ogamenewbie:如果要用 BigDecimal... 乾脆就不要轉回浮點了 XD 10/09 11:30 : : 推 ogamenewbie:也不要從浮點轉過去.. 10/09 11:31 : : 推 archerlin:請問O大精確的四捨五入用NumberFormat何解? ^^ 10/09 11:36 : 對我來說, 原po的需求是在用浮點數 (例如double或float) 的情況下, : 去對結果, 一個要加以呈現的東西, 加以修飾呈現. : 所以我第一個想到的就是 numberformat. : 這其中本來就是不精確的. 因為 double 本來就不保證他的數值是精確的. : 而你提到的 BigDecimal, 是保證他的結果是精確的. : 但是有個前提, 那就是傳入的資料來源也是精確的 (例如 String) : 所以我看到傳入的是 double, 感覺就很差. : 再把問題丟回給你, 假設 d 是 1, 取到小數兩位, : 不對 d 做額外處理的情況下, 你上面的程式能直接印出 d 是 1.00 嘛? 有些事情想確認一下 因為我很少用四捨五入的東西 因為numbrformat有點看不懂... 我有用DecimalFormat去做 1.覺得用比較簡單 2.我想效果是一樣的 結果像2.25... 正常四捨五入應該是2.3 我的結果是2.2 對2.375四捨五入的結果是2.4 根據o大的講解... 這也都是因為浮點數的誤差關係嗎 另外這麼說來的話 如果想要進行正確的四捨五入運算 是否應該要把double轉成字串 然後再使用BigDecimal 雖然a大說的我看不太懂... 得再去google研究一下相關參數之類的 不過之前是因為連要找啥都沒啥頭緒 很感謝大大們給了我該從哪著手的方向=.=+ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.69.229

10/09 21:46, , 1F
正因為用DecimalFormat有你說的問題所以我才想請教o大..
10/09 21:46, 1F

10/09 21:47, , 2F
有何單用DecimalFormat可以正確的四捨五入的方式!想學:)
10/09 21:47, 2F
文章代碼(AID): #172q54xP (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 2 之 17 篇):
文章代碼(AID): #172q54xP (java)