如何让Scala BigDecimal显示大量数字?

del*_*ber 3 scala

执行以下操作

  val num = BigDecimal(1.0)
  val den = BigDecimal(3.0)
  println((num/den)(MathContext.DECIMAL128))
Run Code Online (Sandbox Code Playgroud)

我只能得到

0.3333333333333333333333333333333333
Run Code Online (Sandbox Code Playgroud)

这比我想要的少128

Nei*_*ssy 5

默认上下文是MathContext.DECIMAL128,它在所有计算中使用,因此在您的示例中,num/den的结果已经舍入到128位.您需要首先在所有值上设置上下文,然后进行计算.

val mc = new MathContext(512)
val num = BigDecimal(1.0,mc)
val den = BigDecimal(3.0,mc)
println(num/den)
Run Code Online (Sandbox Code Playgroud)

除非您知道算术不会产生无界的十进制表示,否则不要尝试使用MathContext.UNLIMITED.在您尝试打印之前它会爆炸.