sehr kleine Dezimalzahlen (BigDecimal) falsch angezeigt

Status
Nicht offen für weitere Antworten.

gurke1509

Mitglied
Hallo zusammen.

Ich programmiere gerade ein Programm, welches in der Lage sein soll die Wahrscheinlichkeit bei einem Bernoulli-Experiment auszurechnen.
Jedoch scheitert es daran, dass mit das Programm bei zu kleinen Dezimalwerten, zum Beispiel 0.0000000334 das Komma so verschiebt dass es zu einem 0.0334 wird. Nur habe ich leider keine Ahnung warum.
Ich habe hier mal die wichtigsten Methoden:

Code:
public String bernoulli_exakt(double n, double k, double p)
    {
        
        BigDecimal schritt1 = new BigDecimal("" + bin(n,k));
        BigDecimal schritt2 = new BigDecimal("" + Math.pow(p,k));
        BigDecimal schritt3 = new BigDecimal("" + Math.pow(1-p,n-k));        
        ergebnis = new BigDecimal("" + (schritt1.multiply(schritt2).multiply(schritt3)));
        ergebnis = ergebnis.movePointRight(2);
        
        String ergebnisstring = ergebnis.toString();
        if(ergebnisstring.length() > 4)
        {
            return (ergebnisstring.substring(0,4));
        }            
        else
            return ergebnisstring;
    }

public BigDecimal fak(double zahl)
    {
        BigDecimal ergebnis = new BigDecimal("1");
        for(long i=2; i < zahl+1; i++)
            ergebnis = ergebnis.multiply(new BigDecimal("" + i));
        return ergebnis;
    }
    
    public BigDecimal bin(double n, double k)
    {
        BigDecimal ndec = new BigDecimal("" + n);
        BigDecimal kdec = new BigDecimal("" + k);
        return (ndec.divide(fak(n-k).multiply(kdec)));
    }


Und nun ein Beispiel:
Wenn ich für n = 100, p = 0.5 und k = 60 eingebe bekomme ich als ergebnisstring ein "1.08". Das ist auch richtig.
Wenn ich dann aber für k = 20 eingebe, erhalte ich als ergebnisstring "4.22". DAS ist falsch! Denn eigentlich müsste das Ergebnis so lauten: "0.0000000422".

Woher kommt das, dass das Komma / der Punkt bei so extrem kleinen Zahlen einfach verschoben wird?
Würde mich freuen, wenn mir einer aushelfen könnte.

Gruß Tobias
 

Ark

Top Contributor
Ich vermute mal, toString() hat hier so etwas geliefert wie "4.22e-9" oder so.

Aber was ist daran eigentlich so exakt, wenn Du doch eigentlich auf double zurückgreifst!? oO

MfG
Ark
 

gurke1509

Mitglied
exakt ist dabei nur die art des experiments..
sprich... wie groß ist die wahrscheinlichkeit bei 100 testläufen mit p=0.5 genau/exakt k richtige zu erhalten.
ich werde später auch andere Methoden hinzufügen, die es ausrechnen können mindestens oder höchstens k positive zu erhalten.

Ich vermute mal, toString() hat hier so etwas geliefert wie "4.22e-9" oder so.
danke.. das wird es wohl sein.... mal sehen.. vielleicht bekommt ich das verbessert
 

gurke1509

Mitglied
also ich habe mich jetzt an der methode setScale() versucht..
aber das scheint einfach nicht zu klappen.

wenn ich ergebnis.setScale(5,0) mache kommt als ergebnis trotzdem noch folgendes raus
4.22816326760158187163655774927738446235656738281250000000E-10

warum? ich versteh's einfach nicht :?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Sehr kleine doubles nicht in Exponentialdarstellung ausgeben Java Basics - Anfänger-Themen 3
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
X Sehr schnelle agile Entwicklung Java Basics - Anfänger-Themen 1
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
P Erste Schritte Console - Sehr komische Ausgabe! Java Basics - Anfänger-Themen 3
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
M Suche Hilfe bei sehr kleinen Quelltexten Java Basics - Anfänger-Themen 2
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
R OutOfmemory Exception bei sehr großer Liste (Tomcat Webservice) Java Basics - Anfänger-Themen 4
H Sehr einfache Java-Programme Java Basics - Anfänger-Themen 24
Luk10 OOP Sehr allgemeine Schnittstelle Java Basics - Anfänger-Themen 19
S Input/Output Sehr langen String in Datei schreiben Java Basics - Anfänger-Themen 8
R ArrayList sehr viel schneller als Array? Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
B ABspeichern eines sehr grossen negativen Werts Java Basics - Anfänger-Themen 6
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
E Reguläre Ausdrücke mit sehr variablen Eigenschaften Java Basics - Anfänger-Themen 2
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
Antoras Datei laden mit BufferedReader sehr langsam Java Basics - Anfänger-Themen 7
F Programm sehr langsam. Windows 7? Java Basics - Anfänger-Themen 23
S Eclipse .metadata ordner ist sehr gross! Java Basics - Anfänger-Themen 1
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
D Sehr großer String lässt sich nicht bearbeiten Java Basics - Anfänger-Themen 7
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
E Methode sehr langsam und funktioniert teilweise nicht Java Basics - Anfänger-Themen 3
S JFileChooser öffnet Unterverzeichnisse sehr langsam Java Basics - Anfänger-Themen 2
G Sehr eigenartige Datumsprobleme. Java Basics - Anfänger-Themen 2
I Schulprojekt !sehr wichtig! Java Basics - Anfänger-Themen 6
M sehr weit verschachtelte XML-datei mit jdom auslesen Java Basics - Anfänger-Themen 4
G g.drawLine arbeitet sehr ungenau. Java Basics - Anfänger-Themen 4
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
F Java Applikation ProjectX startet sehr langsam Java Basics - Anfänger-Themen 3
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
M Welches Framework für kleine WebApp nutzen? Java Basics - Anfänger-Themen 6
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
CptK Interface Kleine Kreise in großem Kreis anordnen Java Basics - Anfänger-Themen 3
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
S Kleine Frage zu Threads Java Basics - Anfänger-Themen 3
T Klassen Kleine Übung zum Thema Klassen Java Basics - Anfänger-Themen 3
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
O Kleine Frage zu cast Java Basics - Anfänger-Themen 3
U DOM Parser, kleine Frage Java Basics - Anfänger-Themen 29
N BierSpiel von "Kopf bis Fuss" eigener Code...kleine Problemstellung. Java Basics - Anfänger-Themen 11
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
TheSorm Kleine Speicher Klasse Java Basics - Anfänger-Themen 24
F Speicherlast mehrere GB durch kleine png files? Java Basics - Anfänger-Themen 1
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
T Kleine Klausurfragen Java Basics - Anfänger-Themen 17
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
Q Vererbung Kleine Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 5
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
O Konsole - Kleine Frage Java Basics - Anfänger-Themen 22
N kleine get-Methode anhand einer Aufgabenstellung Java Basics - Anfänger-Themen 13
D Kleine Rechenregel... ++a Java Basics - Anfänger-Themen 4
ScottGambler Kleine Frage Java Basics - Anfänger-Themen 13
M Erste Schritte 2 Kleine Programme Java Basics - Anfänger-Themen 27
T Kleine Frage Java Basics - Anfänger-Themen 2
B Kleine Erklärung zu einer Codezeile benötigt Java Basics - Anfänger-Themen 5
A Java Flächeninhaltsberechnung kleine Frage Java Basics - Anfänger-Themen 8
H Datei in kleine Stücke teilen und wieder erkennen Java Basics - Anfänger-Themen 10
P eigene kleine Datenverwaltung Java Basics - Anfänger-Themen 5
K Erste Schritte Kleine Verständnisfrage Java Basics - Anfänger-Themen 12
S Erste Schritte Zwei kleine Fragen zu [], int und Konstruktor Java Basics - Anfänger-Themen 3
S Erste Schritte Kleine Problem mit Ausgabe in eine Datei Java Basics - Anfänger-Themen 11
G Kleine Java Programme aus Main Java Programm starten..... Java Basics - Anfänger-Themen 3
H Datenbank suche in kleine Schritte Java Basics - Anfänger-Themen 6
O kleine SwingFrame Java Basics - Anfänger-Themen 3
T Kleine Frage zu Collections Java Basics - Anfänger-Themen 3
J BlueJ! 2 kleine Fragen zum Spiel. Java Basics - Anfänger-Themen 3
J Kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
H Warum funktioniert diese kleine Methode nicht? Java Basics - Anfänger-Themen 8
E Kleine Hilfe für einen Einsteiger Java Basics - Anfänger-Themen 18
Luk10 Dateipfad beim Laden einer Datei + Neue kleine Frage! Java Basics - Anfänger-Themen 11
U actionListener - eine Kleine Frage Java Basics - Anfänger-Themen 7
M kleine Verständisfrage zur Klassenhierarchie, speziel JMenuItem Java Basics - Anfänger-Themen 8
J Kleine Frage zu Methoden & OOP Java Basics - Anfänger-Themen 4
B Paar kleine Grundsatzfragen zu Java Java Basics - Anfänger-Themen 5
M kleine und einfache Verständnisfrage Java Basics - Anfänger-Themen 3
S 2 kleine Methoden negieren und print Java Basics - Anfänger-Themen 8
J if und kleine double Werte Java Basics - Anfänger-Themen 7
H kleine zwischenfrage string Java Basics - Anfänger-Themen 3
ModellbahnerTT Kleine Frage zu doppelten Arrays Java Basics - Anfänger-Themen 3
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
M Kleine Konsole mit Threads + KeyAdapter Java Basics - Anfänger-Themen 6
hdi Kleine Design/Convention Frage zu Konstruktoren Java Basics - Anfänger-Themen 4
hdi kleine Verständnisfrage lokale + Member Variable Java Basics - Anfänger-Themen 10
R Kleine Frage zu Array Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben