【问题标题】:How can I print a number with a high quantity of decimals in the console?如何在控制台中打印包含大量小数的数字?
【发布时间】:2020-10-25 00:12:41
【问题描述】:

这似乎是一个非常基本的问题,但我一直有这个问题。

我正在 Eclipse IDE 中编写一个程序,该程序计算欧拉数的大量小数,它适用于 100、400、1000...等数量。

但是当我想打印超过 1500 个小数时,这是我得到的输出:

它只打印“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;
    }
}
}

【问题讨论】:

  • 我在在线编译器上测试了代码,它运行良好。它也打印得很好。
  • 在 VScode 中也能正常工作!!!
  • 是的,但是在 Eclipse IDE 中它不起作用,可能是 Eclipse 中的控制台问题,或者我正在使用的版本
  • 这能回答你的问题吗? stackoverflow.com/questions/2828255/…
  • 我在一个在线的 Eclipse IDE 上测试了代码。它在那里工作得很好。

标签: java eclipse bigdecimal eulers-number


【解决方案1】:

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

【讨论】:

  • 已解决,原来是定宽控制台停用了,谢谢
猜你喜欢
  • 2020-11-29
  • 1970-01-01
  • 2015-12-02
  • 2013-04-15
  • 2021-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多