gibt es BigDouble in Java ?

ernst

Top Contributor
Hallo allerseits,
BigInteger gibt es in Java.
Suche so etwas Ähnliches mit Fliesskommazahlen.
Wer kennt so etwas Ähnliches wie BigDouble ?

mfg
Ern
 
Was bringt es einem eigentlich etwas aus Prinzip ungenaues durch etwas weniger ungenaues zu ersetzen? Ungenau bleibt ungenau....
Also ich war da auch kurz am stutzen, weil ich mir jetzt nicht wirklich sicher war, ob die Anforderung bei trigonometrischen Funktionen Sinn macht, oder ob die Genauigkeit von double selbst nicht schon nahe an dem best möglichen Ergebnis wäre.... Aber ich habe mir die Art der Kalkulation nicht im Detail angesehen und ggf. ist die kleines bisschen größere Genauigkeit ja für ihn doch relevant.

Ansonsten gibt es auch noch http://www.apfloat.org/apfloat_java/ was erwähnenswert sein könnte.
 
Also ich war da auch kurz am stutzen, weil ich mir jetzt nicht wirklich sicher war, ob die Anforderung bei trigonometrischen Funktionen Sinn macht, oder ob die Genauigkeit von double selbst nicht schon nahe an dem best möglichen Ergebnis wäre.... Aber ich habe mir die Art der Kalkulation nicht im Detail angesehen und ggf. ist die kleines bisschen größere Genauigkeit ja für ihn doch relevant.
Ansonsten gibt es auch noch http://www.apfloat.org/apfloat_java/ was erwähnenswert sein könnte.
Im Matheforum gibt es eine Formel, die die i-te Primzahl berechnet.
Siehe:

mfg
Ern
 
Das ist zB eine sehr ineffiziente Methode um PI zu berechnen (Achtung wohl schon seit der Antike bekannt):
Java:
import java.util.Random;

public class MonteCarloPi {
  private Random rand;

  public MonteCarloPi(Random rand) {
    this.rand = rand;
  }

  double getPi(int turns, float scalar) {
    int n = (int) (turns * scalar);
    int tr = 0;
    for (int i = 0; i < turns; i++) {
      int x = rand.nextInt(n + 1);
      int y = rand.nextInt(n + 1);
      if (x * x + y * y <= n * n) {
        tr++;
      }
    }
    return (4.0 * (double) tr) / (double) turns;
  }

  public static void main(String[] args) {
    MonteCarloPi mc = new MonteCarloPi(new Random(0));
    for (int i = 0; i < 4; i++) {
      System.out.println(mc.getPi(1_000 * (int) Math.pow(10, i), 2f) - Math.PI);
      System.out.println(mc.getPi(1_000 * (int) Math.pow(10, i), 1f) - Math.PI);
      System.out.println(mc.getPi(1_000 * (int) Math.pow(10, i), 0.1f) - Math.PI);
      System.out.println(mc.getPi(1_000 * (int) Math.pow(10, i), 0.01f) - Math.PI);
      System.out.println();
    }
    System.out.println(mc.getPi(100_000, 0.1f));
  }
}


Man könnte sich überlegen ob es genauer würde wenn man es mit BigDecimal, BigDecimalMath usw schreiben würde, aber das bezweifle ich.

Wahrscheinlich wird es nur genauer, wenn man es mal mit einem echtem USB-Zufallszahlengenerator probieren würde (https://www.amazon.com/TrueRNG-V3-Hardware-Random-Generator/dp/B01KR2JHTA). Aber irgendwie bin ich nicht in der Stimmung, mir so ein Ding zu bestellen...
 
@ernst was haste vor? Java greift bei den trigonometrischen Funktionen auf Funktionen des Betriebssystems zurück...
Siehe oben den Link auf den Matheplaneten:
Es wird die Fakultät einer sehr großen Zahl berechnet, wenn man z.B: n=10 setzt.
Dann wird diese durch eine Zahl dividiert. Das Ergebnis mit PI multiplizieret und davon der cos berechnet.
Da brauche ich dann ein entsprechendes Werkzeug.

mfg
ern
 

Neue Themen


Zurück
Oben