2012-02-24 90 views
6

这是很容易创建:为什么Scala的BigDecimal没有ZERO?

object zero extends BigDecimal(java.math.BigDecimal.ZERO) 

我只是想知道这是否是一个疏忽,或者如果有一个明智的决定,不加这个,如果是这样,有没有理由我应避免上面的代码。也许与MathContext有关?

回答

4

我想这是因为通常你不需要它。而在Java中,你需要像

BigDecimal b = new BigDecimal(1.23).add(BigDecimal.ZERO); 
斯卡拉

类型的东西,还有数转换,这种转换意味着你可以写

val b = BigDecimal(1.23) + 0 

你也可以把它写简单地BigDecimal(0)。如果你实例化了很多,你可能想将它缓存为一个命名值(与其他任何数字一样),但通常你不需要,并且我认为它有助于简化API,如果你删除了特殊情况必须记住。

14

如果我猜,这是因为预期的方式来获得该值会是这样的:

val zero: BigDecimal = 0 
+0

好点。感谢您的回答,但我接受Luigi的答案,因为我认为它更详细,对未来的访问者更有用。 – pr1001 2012-02-27 23:27:05