【发布时间】:2015-09-24 11:54:54
【问题描述】:
BigDecimal.ZERO 的 Javadoc 是 The value 0, with a scale of 0. 顾名思义,BigDecimal.ZERO 应该返回值 0.0
我也知道BigDecimal.ZERO是这样编码的:
private static final BigDecimal zeroThroughTen[] = {
new BigDecimal(BigInteger.ZERO, 0, 0, 1),
new BigDecimal(BigInteger.ONE, 1, 0, 1),
...
}
// Constants
/**
* The value 0, with a scale of 0.
*
* @since 1.5
*/
public static final BigDecimal ZERO =
zeroThroughTen[0];
我不明白为什么在 Java 中决定 BigDecimal.ZERO 返回未缩放的零而不是返回十进制零(至少默认使用缩放 1,即 0.0)。
BigDecimal.ZERO 和BigInteger.ZERO 都返回值0 和规模0 有什么需要?
【问题讨论】:
-
为什么应该是
0.0而不是0或0.00?0.0听起来像是一个相当随意的选择。零就是零,所以0(比例为 0)听起来是一个合理的默认值。 -
你是正确的零是零,那么为什么2个常量定义0
-
因为
BigDecimal和BigInteger不仅仅是数字,它们是可以用来存储数字的特殊类,常量定义了一个BigDecimal,其值为0和一个BigInteger值为零。 -
你为什么要问?坦率地说,您或任何人是否认为当前的定义不正确都没有区别。定义就是它。向后兼容的必要性意味着它不会被改变。
-
问只是为了澄清,对此很好奇。
标签: java biginteger bigdecimal zero