BigDecimal在CodenameOne中是否可用?我错了价值观。例如,这是一段代码,以及它产生的输出:
private static void testBigDecimal() {
BigDecimal bdOne = new BigDecimal(BigInteger.ONE, 0);
final BigInteger iTen = new BigInteger("10");
BigDecimal bdTen = new BigDecimal(iTen, 0);
printValues(bdOne, bdTen, iTen, 0);
BigDecimal bdOne1 = bdOne.adjustScale(1);
BigDecimal bdTen1 = bdTen.adjustScale(1);
printValues(bdOne1, bdTen1, iTen, 1);
BigDecimal bdOne4 = bdOne.adjustScale(4);
BigDecimal bdTen4 = bdTen.adjustScale(4);
printValues(bdOne4, bdTen4, iTen, 4);
}
private static void printValues(BigDecimal one, BigDecimal ten, BigInteger iTen, int scale) {
System.out.println("Scale = " + scale);
System.out.println("One: " + one);
System.out.println("Ten: " + ten);
System.out.println("1/10: " + one.divide(ten) + " (divide by BigDecimal");
System.out.println("1/10: " + one.divide(iTen) + " (divide by BigInteger)");
System.out.println("");
}
所以我创造了1和10的值,并且我将其除以1。我除以BigDecimal和BigInteger。而且我在三个不同的规模上这样做。以下是我的结果:
Scale = 0
One: 1
Ten: 10
1/10: 0 (divide by BigDecimal
1/10: 0 (divide by BigInteger)
Scale = 1
One: 1.0
Ten: 10.0
1/10: 0.0 (divide by BigDecimal
1/10: 0.0 (divide by BigInteger)
Scale = 4
One: 1.0000
Ten: 10.0000
1/10: 0.0001 (divide by BigDecimal
1/10: 0.0001 (divide by BigInteger)
所以有时候一分十分给我零,有时候它给我0.0001!我做错了什么吗?或者BigDecimal类需要进行一些严格的调试吗?
答案 0 :(得分:0)
您使用的是旧版本的CodenameOne库吗?运行代码时,我得到以下内容:
Scale = 0
One: 1
Ten: 10
1/10: 0.1 (divide by BigDecimal
1/10: 0.1 (divide by BigInteger)
Scale = 1
One: 1.0
Ten: 10.0
1/10: 0.1 (divide by BigDecimal
1/10: 0.1 (divide by BigInteger)
Scale = 4
One: 1.0000
Ten: 10.0000
1/10: 0.1 (divide by BigDecimal
1/10: 0.1000 (divide by BigInteger)
尝试更新您的图书馆,看看您是否得到了不同的结果。