Discuss / Java / 输出结果在java13,eclipse Version: 2019-12 (4.14.0)上结果为120.0

输出结果在java13,eclipse Version: 2019-12 (4.14.0)上结果为120.0

Topic source

TEIAI_

#1 Created at ... [Delete] [Delete and Lock User]

调用divideAndRemainder()方法时,返回的数组包含两个BigDecimal,分别是商和余数,其中商总是整数,余数不会大于除数。

BigDecimal n = new BigDecimal("12.345");
BigDecimal m = new BigDecimal("0.12");
BigDecimal[] dr = n.divideAndRemainder(m);
System.out.println(dr[0]); // 102.0

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

120.0 = 120 = int

日落有星

#3 Created at ... [Delete] [Delete and Lock User]
System.out.println(dr[0].getClass().toString());

> class java.math.BigDecimal

说明类型还是不一样的,而且如果:

System.out.println(dr[0]==102);

会报错类型不一致。

因此准确来说这里的整数并不是指int类型,而是数学含义上的整数

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

类型当然是BigDecimal了,返回值已经告诉你了:

BigDecimal[] dr = n.divideAndRemainder(m);

这里说的整数是小数部分总是0,你可以把它转换成整数而不丢失精度


  • 1

Reply