double number = 123.456123;
new BigDecimal(number, new MathContext(2, RoundingMode.HALF_UP)).doubleValue();
結果:120.0
new BigDecimal(number, new MathContext(5, RoundingMode.HALF_UP)).doubleValue();
結果:123.46
這是因為粗體字的設定代表返回數字的精度位數,由準確返回值的最左端數字開始計算。
所以要動態的取得整數位數要另外設計:
public int getIntegerLength(double number){
String[] s = new Double(number).toString().split("\\.");
return s[0].equals("0") ? 0 : s[0].length();
}
new BigDecimal(number, new MathContext(getIntegerLength(number) + 2, RoundingMode.HALF_UP)).doubleValue();
如此粗體字部分就可以自行設定要取得小數點後幾位的四捨五入了。
沒有留言:
張貼留言