Ste*_*ing 14 java math bigdecimal
使用以下代码:
BigDecimal x = new BigDecimal("34.5678");
BigDecimal a = x.movePointRight(3);
BigDecimal b = x.scaleByPowerOfTen(3);
BigDecimal c = x.movePointRight(-3);
BigDecimal d = x.scaleByPowerOfTen(-3);
Run Code Online (Sandbox Code Playgroud)
a和b均为34567.8,c和d均为0.0345678.
a.scale()并且b.scale都是1 c.scale()和d.scale()都是7.
这两种方法在什么情况下产生不同的结果?
movePointRight 如果导致一个负面规模,将防止发生负面规模.scaleByPowerOfTen 不会阻止这一点.示例代码:
import java.math.BigDecimal;
public class BigDecimalScale {
public static void main(String... args) {
long base = 12345;
int scale = 4;
BigDecimal number = BigDecimal.valueOf(base, scale);
System.out.println(number);
BigDecimal pointRight = number.movePointRight(5);
System.out.println(pointRight + "; my scale is " + pointRight.scale());
BigDecimal scaleBy = number.scaleByPowerOfTen(5);
System.out.println(scaleBy + "; my scale is " + scaleBy.scale());
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
1.2345
123450; my scale is 0
1.2345E+5; my scale is -1
Run Code Online (Sandbox Code Playgroud)