提问者:小点点

如何在控制台中打印具有高数量小数的数字?


这似乎是一个很基本的问题,但我有一段时间一直有这个问题。

我正在用Eclipse IDE编写一个程序,它计算欧拉数的很大数量的小数,它可以很好地处理像100,400,1000……。

但是当我想打印超过1500个小数时,我得到的输出是:https://I.stack.imgur.com/zlqmw.png

它只打印“2.”,我认为那是算法的问题,所以,为了检查我的代码是否正确,我将输出存储在剪贴板中查看结果数字,它正在计算1500多个小数,没有任何错误。

有人知道我怎样才能在控制台中打印数字而不出现这个错误吗?

此外,我将代码留在这里以提供更多细节:

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.math.*;

import javax.tools.Tool;

public class eulersNumberCalculation {

public static void main(String args[]) {

    // E NUMBER

    BigDecimal eNumber = new BigDecimal("0"), precision = new BigDecimal("1500");

    for (BigDecimal i = BigDecimal.valueOf(0); i.compareTo(precision) <= 0; i = i.add(BigDecimal.ONE)) {
        BigDecimal res = BigDecimal.ONE.divide(factorial(i), new MathContext(100, RoundingMode.HALF_UP));
        eNumber = eNumber.add(res);
    }

    System.out.print(eNumber.toString());
}

public static BigDecimal factorial(BigDecimal n) {
    if (n.compareTo(BigDecimal.ZERO) == 0) {
        return BigDecimal.ONE;
    } else {
        BigDecimal b = n;
        b = b.subtract(BigDecimal.ONE);
        BigDecimal resultado = n;

        for (BigDecimal i = n; i.compareTo(new BigDecimal("1")) > 0; i = i.subtract(BigDecimal.ONE)) {
            resultado = resultado.multiply(b);
            b = b.subtract(new BigDecimal("1"));
        }
        return resultado;
    }
}
}

共1个答案

匿名用户

取消选中控制台限制(或设置为适当的数字),并设置固定宽度值。