我的情况是我想缩放值,但在某些情况下,我得到的异常表明需要进行舍入。
假设我有数字-9.999999
和9.999999
让我们说我只关心小数点后最多4点的精度。如何在不检查值是正还是负的情况下正确缩放这两个数字?
例如,如果我使用RoundingMode.FLOOR
,我会得到:
9.999999 scales to 99999
-9.999999 scales to -100000
我想要的是9.9999
和-9.9999
。
我真的需要检查这里的标志吗?我觉得我错过了什么。
答案 0 :(得分:3)
RoundingMode.DOWN总是向零舍入,所以这应该是你正在寻找的。也就是说,它在轮次结束时永远不会增加你的最终数字。它相当于以指定的比例截断您的值。
答案 1 :(得分:0)
BigDecimal bg1, bg2;
bg1 = new BigDecimal("123.12678");
// set scale of bg1 to 2 in bg2 using floor as rounding mode
bg2 = bg1.setScale(2, RoundingMode.FLOOR);
String str = bg1 + " after changing the scale to 2 and rounding is
" +bg2;
// print bg2 value
System.out.println( str );
给你输出:123.12678 after changing the scale to 2 and rounding is 123.12
使用RoundingMode.FLOOR
RoundingMode.Floor充当可能数字的RoundingMode.DOWN和负数的RoundingMode.UP
DecimalFormat decimalFormat = new DecimalFormat("00");
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
System.out.println("FORMAT:" + decimalFormat.format(-94.5));<br>The result will be: FORMAT: - 95
RoundingMode.CEILING充当可能数字的RoundingMode.UP和负面的RoundingMode.DOWN
DecimalFormat decimalFormat = new DecimalFormat("00");
decimalFormat.setRoundingMode(RoundingMode.CEILING);
System.out.println("FORMAT:" + decimalFormat.format(-94.5));<br>The result will be:FORMAT: -94