我试图用Joda-Money来使用scala BigDecimal。将scala BigDecimal传递给Money.of()不起作用,因为它需要一个BigDecimal。
[error] C:\test.scala:82: overloaded method value of with alternatives:
[error] (x$1: org.joda.money.BigMoneyProvider,x$2: java.math.RoundingMode)org.joda.money.Money <and>
[error] (x$1: org.joda.money.CurrencyUnit,x$2: Double)org.joda.money.Money <and>
[error] (x$1: org.joda.money.CurrencyUnit,x$2: java.math.BigDecimal)org.joda.money.Money
[error] cannot be applied to (org.joda.money.CurrencyUnit, scala.math.BigDecimal)
[error] Money.of(gbp, a)
[error] ^我可以使用.underlying,它可以工作:
val gbp = CurrencyUnit.of("GBP")
val a = BigDecimal("2.2")
Money.of(gbp, a.underlying)但是有没有更好的方法,比如已经存在于某个地方的隐式转换?
发布于 2014-02-28 09:55:12
似乎在scala.math.BigDecimal中,只有
implicit def javaBigDecimal2bigDecimal(x: java.math.BigDecimal): BigDecimal =
BigDecimal(x)所以你必须自己定义它:
implicit def scalaBigDecimal2bigDecimal(x: BigDecimal): java.math.BigDecimal =
x.underlying不过,我不知道是否有任何库已经提供了这种转换。
https://stackoverflow.com/questions/22090895
复制相似问题