gpt4 book ai didi

Scala BigDecimal 除法

转载 作者:行者123 更新时间:2023-12-01 10:15:16 26 4
gpt4 key购买 nike

除法运算符在 scala BigDecimal 上有什么用?

val d1 = BigDecimal(2)
val d2 = BigDecimal(3)
val div = d1 / d2 //throws ArithmeticException: non-terminating decimal expansion

为了让它工作,您需要在小数上定义一个 DECIMAL128 上下文。不幸的是,我能看到的唯一方法是:

val div = new BigDecimal(d1.bigDecimal.divide(d2.bigDecimal, MathContext.DECIMAL128)) //OK!

但这只是一团糟!我错过了什么吗?

最佳答案

这是 Scala 中的一个已知错误 -> 请参阅 Ticket #1812 .显然,它已在 Scala 2.8 中修复。您还可以从错误报告中下载修复程序,该修复程序实现了附加了 MathContextBigDecimal。使用给定的 Decimal.scala ,我可以写这样的东西并让它运行而不会出错:

val d1 = Decimal128(1)
val d2 = Decimal128(3)
val d3 = d1 / d2 // works, gives a truncated result

因此,您可以编译给定的 Decimal.scala 文件并将其添加到您的 classpath 或等待 Scala 2.8,它已经包含在标准库中.

编辑revision 18021 Scala 标准库的变化 BigDecimal 实现这一点。

希望对您有所帮助:)

-- Flaviu Cipcigan

关于Scala BigDecimal 除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1340008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com