下面是示例测试代码及其输出。我看到java bigDecimal存储了scala BigDecimal在精度上丢失的所有数字,并进行了一些舍入,并且同样发生了spark。有没有办法设置精度或说从不圆。在任何情况下我都不想截断或舍入
val sc = sparkSession
import java.math.BigDecimal
import sc.implicits._
val bigNum : BigDecimal = new BigDecimal(0.02498934809987987982348902384928349)
val convertedNum: scala.math.BigDecimal = scala.math.BigDecimal(bigNum)
val scalaBigNum: scala.math.BigDecimal = scala.math.BigDecimal(0.02498934809987987982348902384928349)
println("Big num in java" + bigNum)
println("Converted " + convertedNum)
println("Big num in scala " + scalaBigNum)
val ds = List(scalaBigNum).toDS()
println(ds.head)
println(ds.toDF.head)
产量
基于spark.apache.org/docs
在这里:https://www.scala-lang.org/api/2.12.5/scala/math/BigDecimal.html
但是如果你想以一种简单的方式,那么在转换为String
之前如何将其转换为DF or DS
以获得精确值。 :)
如果你想要试试:)