Ниже приведен пример тестового кода и его вывод. Я вижу, что java bigDecimal хранит все цифры, в то время как scala BigDecimal теряет точность и делает некоторое округление, и то же самое происходит с искрой. Есть ли способ установить точность или сказать никогда не округлять. Я не хочу урезать или округлять в любом случае
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)
выход
- Большой номер в java0.0249893480998798801773208566601169877685606479644775390625
- Преобразовано 0.0249893480998798801773208566601169877685606479644775390625
- Большое число в скале 0.02498934809987988
- +0,024989348099879880
- [0,024989348099879880]