carookee - group communication for you
Home / JavaForum / Beginner
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.650 User online
1 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 1329 von 2963 (45%) |<   <   >   >|

Autor DeaconFrost
Datum 20.11.05, 01:07
Betreff Re: Euler Zahl


Habe Dir ein kleines Programm geschrieben, das die Eulersche Zahl mit deiner Methode auf 200 Stellen genau berechnet. Die in Java eingebauten Klassen BigDecimal bzw. BigInteger sind (wie Du siehst) ziemlich mächtig im Umgang mit großen Zahlen und für diesen Zweck bestens geeignet.
Hoffe, das ist genau das, was Du suchst.

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) {}
        }
    }





Diskussionsverlauf:
Euler Zahl
    Re: Euler Zahl

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com