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

看板java作者時間18年前 (2007/10/09 09:06), 編輯推噓7(704)
留言11則, 3人參與, 最新討論串1/1
在進行數學運算時 如果型態是浮點數的話 如何對運算結果做四捨五入到特定小數位數 例如四捨五入至小數點後第一位、第二位等等 書上我只看到用Math.round四捨五入到整數位數 不知道有沒有別的方法可以四捨五入到小數位數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.69.229

10/09 09:41, , 1F
numberformat?
10/09 09:41, 1F

10/09 11:09, , 2F
import java.math.BigDecimal 詳見 http://0rz.tw/620Oc
10/09 11:09, 2F

10/09 11:24, , 3F
BigDecimal b = new BigDecimal(Double.toString(d));
10/09 11:24, 3F

10/09 11:26, , 4F
d = b.divide(new BigDecimal("1"), scale,
10/09 11:26, 4F

10/09 11:27, , 5F
BigDecimal.ROUND_HALF_UP).doubleValue();
10/09 11:27, 5F

10/09 11:28, , 6F
類似這樣...(d為欲四捨五入的double, scale為小數位數)
10/09 11:28, 6F

10/09 11:30, , 7F
如果要用 BigDecimal... 乾脆就不要轉回浮點了 XD
10/09 11:30, 7F

10/09 11:31, , 8F
也不要從浮點轉過去..
10/09 11:31, 8F

10/09 11:36, , 9F
請問O大精確的四捨五入用NumberFormat何解? ^^
10/09 11:36, 9F

10/09 14:02, , 10F
我會用int轉型相減,%取位數值,if最後合併,不懂用高級api
10/09 14:02, 10F

10/09 14:07, , 11F
或者只是要印出的話也可以搭配1.5的printf
10/09 14:07, 11F
文章代碼(AID): #172jGNxb (java)