scala - 将 BigDecimal 与整数相乘

标签 scala bigdecimal

我想将财务金额乘以数量。我知道 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 中做到这一点呢?像这样将小数和整数相乘会降低精度吗?我也需要把很多这些加在一起

最佳答案

你实际上可以乘以 BigDecimalInt使用 BigDecimalmultiplication operator :

def *(that: BigDecimal): BigDecimal



Int您将提供其参数为 implicitly converted to a BigDecimal 基于:

implicit def int2bigDecimal(i: Int): BigDecimal



因此,您可以安全地乘以您的 BigDecimalInt好像它是一个 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/

相关文章:

java - 变量类型问题

scala - 如何使用 Scala 的 this 类型、抽象类型等来实现 Self 类型?

scala - Spark 数据帧中的序列

scala - 如何重复交换scala列表中的元素?

java - 如何在 play 框架中实现投票系统?

java - 将固定值添加到 bigdecimal 列表中

java - Java BBP公式中PI的百万元素

Java BigDecimal.toPlainString() 性能

java - Spring Restful中传输BigDecimal类型

scala - SBT项目导航