Scala 如何产生BigDecimal NumberFormatException并解决它?

Scala 如何产生BigDecimal NumberFormatException并解决它?,scala,bigdecimal,spray-json,Scala,Bigdecimal,Spray Json,我正在scala代码中使用spray json反序列化的代码片段 当我在命令提示符下执行它时,我没有得到任何异常,但是在执行完整的scala代码时,得到了NumberFormatException ERROR JobManagerActor: [akka://JobServer/user/jobManager-eb-a124-c7330743f884] - Got Throwable java.lang.NumberFormatException at java.math.BigDecimal.

我正在scala代码中使用spray json反序列化的代码片段

当我在命令提示符下执行它时,我没有得到任何异常,但是在执行完整的scala代码时,得到了NumberFormatException

ERROR JobManagerActor: [akka://JobServer/user/jobManager-eb-a124-c7330743f884] - Got Throwable
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(BigDecimal.java:494)
at java.math.BigDecimal.<init>(BigDecimal.java:824)
at scala.math.BigDecimal$.decimal(BigDecimal.scala:52)
at scala.math.BigDecimal$.apply(BigDecimal.scala:249)
请为我提供任何复制上述异常和解决技术的示例

我在堆栈溢出中发现了一些与此相关的问题,并尝试重现上述异常

scala> val a = BigDecimal("0")
a: scala.math.BigDecimal = 0

scala> val a = BigDecimal("0 ")
java.lang.NumberFormatException
  at java.math.BigDecimal.<init>(BigDecimal.java:494)
  at java.math.BigDecimal.<init>(BigDecimal.java:383)
  at java.math.BigDecimal.<init>(BigDecimal.java:806)
  at scala.math.BigDecimal$.exact(BigDecimal.scala:125)
  at scala.math.BigDecimal$.apply(BigDecimal.scala:283)
  ... 43 elided
但它不会对上述代码引发任何异常。

此问题是由以下原因引起的:def writed:Double=,t的值为Double.NaN,当BigDecimal转换此值时,会引发NumberFormatException。复制:

  def main(args: Array[String]): Unit = {
    val t: Double = Double.NaN
    convert(t)
  }
  def convert(d: Double): BigDecimal = {
    println(java.lang.Double.toString(d))
    BigDecimal(d)
  }
对于解决方案,我想当你得到它时,也许你可以处理Double.NaN

  def main(args: Array[String]): Unit = {
    val t: Double = Double.NaN
    convert(t)
  }
  def convert(d: Double): BigDecimal = {
    println(java.lang.Double.toString(d))
    BigDecimal(d)
  }