加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala BigDecimal分部

发布时间:2020-12-16 09:04:51 所属栏目:安全 来源:网络整理
导读:scala BigDecimal上的除法运算符有什么用? val d1 = BigDecimal(2)val d2 = BigDecimal(3)val div = d1 / d2 //throws ArithmeticException: non-terminating decimal expansion 为了使其工作,您需要在小数上定义DECIMAL128上下文.不幸的是,我能看到这样做
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中修复.您还可以从错误报告中下载修复程序,该修复程序实现了一个附加了MathContext的BigDecimal.使用给定的 Decimal.scala,我可以写这样的东西,让它运行没有错误:

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

因此,您可以编译给定的Decimal.scala文件并将其添加到类路径中,也可以等待Scala 2.8,它已经将它放在标准库中.

编辑参见Scala标准库的revision 18021,以了解对实现此目的的BigDecimal的更改.

希望能帮助到你 :)

– Flaviu Cipcigan

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读