我有一個函數可以計算創建一個BigDecimal格式變量的數據,並且我試圖根據結果向上或向下取整。例如:java BigDecimal自動向上/向下取整
16.543242123應該是16.5 3.35應該是3.4 6.3456應該是6.3
等,如果第三位等於5或以上圍捕第二位,如果其等於4及以下,刪除第三位。這並不是絕對需要BigDecimal,我可以計算出我在設法完成整數後轉換數字。 在此先感謝。
我有一個函數可以計算創建一個BigDecimal格式變量的數據,並且我試圖根據結果向上或向下取整。例如:java BigDecimal自動向上/向下取整
16.543242123應該是16.5 3.35應該是3.4 6.3456應該是6.3
等,如果第三位等於5或以上圍捕第二位,如果其等於4及以下,刪除第三位。這並不是絕對需要BigDecimal,我可以計算出我在設法完成整數後轉換數字。 在此先感謝。
這應做到:
BigDecimal bg1 = new BigDecimal(16.543242123);
bg1 = bg1.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg1.toString()); //16.5
BigDecimal bg2 = new BigDecimal(3.35);
bg2 = bg2.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg2.toString()); //3.4
BigDecimal bg3 = new BigDecimal(6.3456);
bg3 = bg3.setScale(1, BigDecimal.ROUND_HALF_EVEN);
System.out.println(bg3.toString()); //6.3
非常感謝,它工作:) – Phil
BigDecimal bd = new BigDecimal("16.553242123");
BigDecimal format = bd.setScale(1, RoundingMode.HALF_UP);
這可能有助於http://stackoverflow.com/questions/10883308/how-to-handle-rounding-errors-in-javas-bigdecimal/10883502 #10883502 – Kennet