作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用以下代码:
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);
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());
}
}
结果:
1.2345
123450; my scale is 0
1.2345E+5; my scale is -1
关于java - BigDecimal movePointRight 和 scaleByPowerOfTen 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25454734/
下面的程序卡住了,我不知道为什么。 import java.math.*; public class BigDec { public static BigDecimal exp(double z)
使用以下代码: BigDecimal x = new BigDecimal("34.5678"); BigDecimal a = x.movePointRight(3); BigDecimal b =
我是一名优秀的程序员,十分优秀!