Java.math.BigDecimal.setScale() 方法
描述
java.math.BigDecimal.setScale(int newScale, RoundingMode roundingMode) 返回一个 BigDecimal,其 scale 为指定值,其未缩放值是通过将此 BigDecimal 的未缩放值乘以或除以适当的幂来确定的 十以保持其整体价值。
如果通过操作缩小比例,则必须将未缩放的值除(而不是相乘),并且值可能会改变; 在这种情况下,指定的舍入模式应用于除法。
由于 BigDecimal 对象是不可变的,因此调用此方法不会导致修改原始对象,这与使用名为 setX 的方法更改字段 X 的通常约定相反。相反,setScale 返回具有适当比例的对象; 返回的对象可能是新分配的,也可能不是新分配的。
声明
以下是 java.math.BigDecimal.setScale() 方法的声明。
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
参数
newScale − 要返回的 BigDecimal 值的小数位数。
roundingMode − 要应用的舍入模式。
返回值
此方法返回一个 BigDecimal,其标度为指定值,其未标度值通过将此 BigDecimal 的未标度值乘以或除以适当的 10 次方来确定,以保持其整体值。
异常
ArithmeticException − 如果 roundingMode == ROUND_UNNECESSARY 并且指定的缩放操作将需要舍入。
示例
下面的例子展示了 math.BigDecimal.setScale() 方法的使用。
package com.tutorialspoint; import java.math.*; public class BigDecimalDemo { public static void main(String[] args) { // create 2 BigDecimal Objects 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