Scala BigDecimal如何显示更多的小数?

Scala BigDecimal如何显示更多的小数?,scala,bigdecimal,digits,pi,decimal,Scala,Bigdecimal,Digits,Pi,Decimal,首先,我知道有一个关于1除以3的类似主题。然而,我的代码完全不同,我不知道如何将这里给出的信息应用于我的情况。我将感谢任何和所有的帮助 我用Scala做了一个Pi计算器,在代码的最后我打印了结果。然而,我想要更多的小数,我不知道如何做到这一点。我当前的输出是: Expected decimals: 34 3.141592653589793238462643383279500 代码如下: package theBrain object Calculator { def main(args: A

首先,我知道有一个关于1除以3的类似主题。然而,我的代码完全不同,我不知道如何将这里给出的信息应用于我的情况。我将感谢任何和所有的帮助

我用Scala做了一个Pi计算器,在代码的最后我打印了结果。然而,我想要更多的小数,我不知道如何做到这一点。我当前的输出是:

Expected decimals: 34
3.141592653589793238462643383279500
代码如下:

package theBrain
object Calculator 
{
def main(args: Array[String]) 
{

var i = 100
var j = 100
var lastValueOnFirstLine = j+i
var array = new Array [BigDecimal] (0)

var counter = i-1

for (d <- j to lastValueOnFirstLine by 1)
{
  var almostPi = BigDecimal(0)
  var pi = BigDecimal(0)

  for (b <- 0 to d by 1)
  {
      var partialAnswer = (if (b%2 != 0) {-1} else {1} )/((BigDecimal(2)*BigDecimal(b))+BigDecimal(1))
      almostPi = partialAnswer + almostPi

  }
  pi = 4*almostPi
 array = array:+pi
}

for (z <- counter to 0 by -1){
var array2 = new Array [BigDecimal] (0)
var length = array.length -2
for (a <- 0 to length by 1){

var result = (array(a)+array(a+1))/2
array2 = array2:+result
}
array = array2
counter -= 1
}

for (element <- array) {
println("Expected decimals: " + element.precision)
println(element)
}

}
}
package theBrain
对象计算器
{
def main(参数:数组[字符串])
{
变量i=100
var j=100
var lastValueOnFirstLine=j+i
变量数组=新数组[BigDecimal](0)
var计数器=i-1

对于(d,在创建
BigDecimal
的实例时,必须提供不同的
java.math.MathContext
。请注意,这不仅会影响输出上打印的小数数量,而且会影响计算精度。这与仅对数字进行格式化是完全不同的

scala> BigDecimal(1) / 3
res0: scala.math.BigDecimal = 0.3333333333333333333333333333333333

scala> res0.precision
res1: Int = 34

scala> BigDecimal(1, new java.math.MathContext(50)) / 3
res2: scala.math.BigDecimal = 0.33333333333333333333333333333333333333333333333333

scala> res2.precision
res3: Int = 50

我不明白。你期望34位,你得到34位。那么问题出在哪里?