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

看板java作者 (._.)時間18年前 (2007/10/09 14:03), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/17 (看更多)
※ 引述《thinkniht ()》之銘言: : 標題: [J2SE] 進行浮點數運算時如何四捨五入至小數第幾位 : 時間: Tue Oct 9 09:06:30 2007 : : 在進行數學運算時 : 如果型態是浮點數的話 : 如何對運算結果做四捨五入到特定小數位數 : 例如四捨五入至小數點後第一位、第二位等等 : 書上我只看到用Math.round四捨五入到整數位數 : 不知道有沒有別的方法可以四捨五入到小數位數 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ 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 嘛? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.148.49

10/09 21:44, , 1F
input/output用double也只是配合原po需求阿當然不轉更好
10/09 21:44, 1F
文章代碼(AID): #172ncduI (java)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 17 篇):
文章代碼(AID): #172ncduI (java)