Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why doesn't Scala's BigDecimal have a ZERO?

It's easy enough to create:

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

I'm just wondering whether this was an oversight, or if there was a conscious decision to not add this and, if so, are there reasons why I should avoid the code above. Perhaps having to do with the MathContext?

like image 246
pr1001 Avatar asked Feb 24 '12 18:02

pr1001


2 Answers

If I had to guess, it's because the expected way to get that value would be like this:

val zero: BigDecimal = 0
like image 132
Ian McLaird Avatar answered Oct 14 '22 05:10

Ian McLaird


I'd think it's because usually you don't need it. Whereas in Java you need to type something like

BigDecimal b = new BigDecimal(1.23).add(BigDecimal.ZERO);

in Scala, there are number conversions that mean you can write

val b = BigDecimal(1.23) + 0

You can also write it simply as BigDecimal(0). If you're instantiating that a lot you might want to cache it as a named value (as for any other number), but you won't normally need to, and I think it helps simplify the API if you remove special cases that you have to remember.

like image 45
Luigi Plinge Avatar answered Oct 14 '22 04:10

Luigi Plinge