package test.math.euler;import java.math.*;import java.io.*;public class Euler { // Konstante für 1 private static final BigDecimal one = new BigDecimal(1); /** * @param args */ public static void main(String[] args) { // Die Anzahl der Dezimalstellen int precision = 200; System.out.println("Eulersche Zahl auf " + precision + "Dezimalstellen genau:"); // Präzision in der gerechnet werden soll // (+3 Dezimalstellen, um den Rundungsfehler abzufangen) MathContext c = new MathContext(precision + 3); // Die Eulersche Zahl BigDecimal e = new BigDecimal(1, c); // Die nächste Iteration der Eulerschen Zahl BigDecimal newE = new BigDecimal(1, c); // Der Zähler des Bruchs 1/n! BigInteger divisor = new BigInteger("1"); // Die nächste Zahl, die auf den Divisor aufmultipliziert werden muss BigInteger next = new BigInteger("1"); do { e = newE; newE = e.add(one.divide(new BigDecimal(divisor), c), c); next = next.add(BigInteger.ONE); divisor = divisor.multiply(next); } while (e.compareTo(newE) != 0); // solange, bis keine Änderung // Zahl ausgeben und die überzähligen Stellen abschneiden System.out.println(e.toPlainString().substring(0, precision + 2)); System.out.println("Zum Beenden Return drücken"); BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try { r.readLine(); } catch (IOException ex) {} } }