如何在控制台中打印小数位数较多的数字?
How can I print a number with a high quantity of decimals in the console?
这似乎是一个非常基本的问题,但我已经被这个问题困扰了一段时间。
我正在 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;
}
}
}
取消选中控制台限制(或设置为适当的数字)并设置固定宽度值。
这似乎是一个非常基本的问题,但我已经被这个问题困扰了一段时间。
我正在 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;
}
}
}
取消选中控制台限制(或设置为适当的数字)并设置固定宽度值。