在 Scala 中删除 BigDecimal 的尾随零的正确方法是什么?

发布于 2025-01-02 17:38:41 字数 266 浏览 2 评论 0原文

scala.math.BigDecimal.toString 可以返回类似“0.888200000”的内容。如果我想要“0.8882”,我能做的最好的是什么? java.math.BigDecimal 有用于此目的的 stripTrailingZeros() 方法,但 Scala 的 BigDecimal 似乎缺少它。使用 scala.math.BigDecimal.underlying 获取底层 java.math.BigDecimal 是最好的方法还是 Scala 中有更好的方法吗?

scala.math.BigDecimal.toString can return something like "0.888200000". What can be the best I can do if I want "0.8882" instead? java.math.BigDecimal has stripTrailingZeros() method for this, but Scala's BigDecimal seems lacking it. Is using scala.math.BigDecimal.underlying to get the underlying java.math.BigDecimal the best way to go or is there a better way in Scala?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妖妓 2025-01-09 17:38:41

如果您想访问所有 J​​ava 方法但不想键入底层,那么隐式 def 怎么样?

val b = math.BigDecimal("0.888200000")
implicit def bigDecimalToJavaBigDecimal(b: math.BigDecimal) = b.underlying

scala> b.stripTrailingZeros
res1: java.math.BigDecimal = 0.8882

您会得到一个 Java BigDecimal 返回值,但这没关系,因为在导入 math.BigDecimal 时,已经有一个返回到 Scala 版本的隐式 def 了。 >,称为javaBigDecimal2bigDecimal

How about an implicit def if you want access to all the Java methods but don't want to type the underlying?

val b = math.BigDecimal("0.888200000")
implicit def bigDecimalToJavaBigDecimal(b: math.BigDecimal) = b.underlying

scala> b.stripTrailingZeros
res1: java.math.BigDecimal = 0.8882

You get a Java BigDecimal back, but that's OK because there's already an implicit def back to the Scala version which you get when you import math.BigDecimal, called javaBigDecimal2bigDecimal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文