Re: [J2SE] 進行浮點數運算時如何四捨五入至小數第 …
※ 引述《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
10/09 21:44, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 17 篇):