我想将财务金额乘以数量。我知道 Scala 在底层使用 Java 的 BigDecimal,但语法似乎不一样。
val price = BigDecimal("0.01") // £0.01
val qty = 10
我试图这样做
BigDecimal(price).*(BigDecimal(qty))
但这是一个编译错误。如果我查看 Java SO 帖子,您可以将整数传递给 BigDecimal,然后像这样将其相乘
BigDecimal(price).multiply(BigDecimal(qty))
那么你如何在 Scala 中做到这一点呢?像这样将小数和整数相乘会降低精度吗?我也需要把很多这些加在一起
最佳答案
你实际上可以乘以 BigDecimal
与 Int
使用 BigDecimal
的 multiplication operator :
def *(that: BigDecimal): BigDecimal
自
Int
您将提供其参数为 implicitly converted to a BigDecimal
基于:implicit def int2bigDecimal(i: Int): BigDecimal
因此,您可以安全地乘以您的
BigDecimal
与 Int
好像它是一个 BigDecimal
并收到 BigDecimal
没有精度损失:val price = BigDecimal("0.01")
// scala.math.BigDecimal = 0.01
val qty = 10
// Int = 10
price * qty // same as BigDecimal("0.01").*(10)
// scala.math.BigDecimal = 0.10
关于scala - 将 BigDecimal 与整数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56003086/