Hi erstmal... ich bin noch neu hier, also nicht lachen über meine Fragen...^-^
Also mein Problem ist folgendes:
Ich soll die eulerzahl e bestimmen... (~2,7) mit der Formel:
e=(1+(1/n))^n n ist eine beliebig große ganzzahlige Zahl
Soweit kein Problem
Das Problem ist aber mein Taschenrechner kann das bis 10^9 schneller und genauer als mein Programm.
Und über 10^9 komme ich leider auch nicht beim pc heraus.
Denn
Geht nicht da 10^10 angeblich zu groß ist(obwohl es im werte bereich von double liegt)
und dass geht auch nicht:
Wird zu 3,0.... was natürlich nicht e (2,7...) ist!
Würde man außerdem noch eine 10er Potenz dranhängen kommt 1 heraus...
Außerdem sind die ergebnisse von der Stellen anzahl recht ungenau.
_________
2.Versuch
Also habe ich mir gedacht ich versuche es mit BigDecimal:
die ausgabe ist 2.719640856168128349840471210069524..........001001
(3000 Stellen)
Soweit so gut... jedoch ist das nicht sehr genau mit n=1000!
erhöhe ich n auch nur auf 10000, rechnet er ewigkeiten.
---------->>>Mein Problem ist nicht gelöst!
zum Vergleich:
Ich habe hier ein C/Assembler Programm das mir e auf 157764 Stellen genau! berechnet!Und das innerhalb von ner halben minute...
Könnt ihr mir da irgendwie weiterhelfen???
Ich find da nämlich keine Lösung dazu
^-^
Also mein Problem ist folgendes:
Ich soll die eulerzahl e bestimmen... (~2,7) mit der Formel:
e=(1+(1/n))^n n ist eine beliebig große ganzzahlige Zahl
Soweit kein Problem
Code:
class CE{
public static void main(String argv[]){
double a=1.0d;
double b= 1000000000;// entspricht 10^9
double x;
x=Math.pow((1+(a/b)),b);
System.out.println(x);
}
}
Und über 10^9 komme ich leider auch nicht beim pc heraus.
Denn
Code:
class CE{
public static void main(String argv[]){
double a=1.0d;
double b= 10000000000;//entspricht 10^10
double x;
x=Math.pow((1+(a/b)),b);
System.out.println(x);
}
}
und dass geht auch nicht:
Code:
class CE{
public static void main(String argv[]){
double a=1.0d;
double b= 1000000000000000.0d;// bischen mehr, damit der fehler deutlicher wird
double x;
x=Math.pow((1+(a/b)),b);
System.out.println(x);
}
}
Würde man außerdem noch eine 10er Potenz dranhängen kommt 1 heraus...
Außerdem sind die ergebnisse von der Stellen anzahl recht ungenau.
_________
2.Versuch
Also habe ich mir gedacht ich versuche es mit BigDecimal:
Code:
/* Listing1703.java */
import java.math.*;
public class Listing1703
{
public static final BigDecimal ZERO = new BigDecimal("0");
public static final BigDecimal ONE = new BigDecimal("1");
public static final BigDecimal TWO = new BigDecimal("1");
public static void main(String[] args)
{
int n=3;
double p =Math.pow(10,n);//entspricht 10^3=1000
BigDecimal one = ONE.setScale(0);
BigDecimal maxerr = one.movePointLeft(n);
BigDecimal xyz = maxerr.add(TWO);
BigDecimal e= new BigDecimal("1");
double y;
e.setScale(100);
double a=xyz.doubleValue();
for(int i=0;i<=p;i++) //Potenzersatz, da Math.pow nur mit double funktioniert und BigDecimal kein pow hat
{e=e.multiply(xyz);
}
System.out.println(e);
}
}
(3000 Stellen)
Soweit so gut... jedoch ist das nicht sehr genau mit n=1000!
erhöhe ich n auch nur auf 10000, rechnet er ewigkeiten.
---------->>>Mein Problem ist nicht gelöst!
zum Vergleich:
Ich habe hier ein C/Assembler Programm das mir e auf 157764 Stellen genau! berechnet!Und das innerhalb von ner halben minute...
Könnt ihr mir da irgendwie weiterhelfen???
Ich find da nämlich keine Lösung dazu
^-^