Schon wieder double -.-

Discordia

Mitglied
Also vorneweg ich habe
HTML:
http://www.java-forum.org/allgemeines/122323-ungenauigkeit-double-float-gleitkommazahlen-alternativen.html
gelesen und auch soweit alles verstanden.

So ein kleines Beispielprogramm:
Java:
public class GleitkommaOperationen {
  public static void main(String[] args) {
    double a = 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
    double b = (1+1+1+1+1+1+1+1+1+1)*0.1;
    double c = 1 + Math.pow(10,20) + (-Math.pow(10,20));
    double d = 1 + (Math.pow(10,20) + (-Math.pow(10,20)));
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
    System.out.println(d);
  }
}

Die Ausgabe sieht so aus:
HTML:
0.9999999999999999
1.0
0.0
1.0

Die erste Zeile kann ich mir erklären. 0.1 ist als Gleitkommazahl nicht genau darstellen, dadurch summiert sich der Fehler auf. Bei der zweiten Zeile entsteht der Fehler nur einmal.
Aber bei der dritten Zeile Versteh ich das nicht so genau. 1 und 10^20 kann man doch beide mit einer double genau speichern und auch genau zusammenrechnen, bzw auch wieder abziehen, warum kommt dann 0 raus?
10^20 entspricht:
HTML:
VorZ 	Exess											Mantisse																																																			
63	62	61	60	59	58	57	56	55	54	53	52	51	50	49	48	47	46	45	44	43	42	41	40	39	38	37	36	35	34	33	32	31	30	29	28	27	26	25	24	23	22	21	20	19	18	17	16	15	14	13	12	11	10	9	8	7	6	5	4	3	2	1	0
0	1	0	0	0	0	0	1	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0

1 entspricht:
HTML:
VorZ	Exess											Mantisse																																																			
63	62	61	60	59	58	57	56	55	54	53	52	51	50	49	48	47	46	45	44	43	42	41	40	39	38	37	36	35	34	33	32	31	30	29	28	27	26	25	24	23	22	21	20	19	18	17	16	15	14	13	12	11	10	9	8	7	6	5	4	3	2	1	0
0	0	1	1	1	1	1	1	1	1	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0

Da 1 den kleineren Exponenten hat wird es bei der Subtraktion an den größeren angepasst:
HTML:
VorZ	Exess											Mantisse																																																			
63	62	61	60	59	58	57	56	55	54	53	52	51	50	49	48	47	46	45	44	43	42	41	40	39	38	37	36	35	34	33	32	31	30	29	28	27	26	25	24	23	22	21	20	19	18	17	16	15	14	13	12	11	10	9	8	7	6	5	4	3	2	1	0
0	1	0	0	0	0	0	1	0	0	1	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0

So und meines Erachtens kann ich die jetzt addieren ohne das Information wegfällt. Warum kommt dann aber die Ausgabe zustande?
 
S

Spacerat

Gast
10^20 ist halt zuviel für ca. 10^16 an Genauigkeit. Da fällt die + 1 nicht mehr ins Gewicht. Dann zählt nur noch 10^20 - 10^20 und das ist halt 0.
 

Stefan0001

Mitglied
hätte ich jetzt auch gesagt

10^20 ist 110111100000101101101011001110100111011001000000000000000000
falls ich jetzt nichts falsch gemacht habe

10^20 + 1 ist 110111100000101101101011001110100111011001000000000000000001

als exponent erhalte ich bei beiden 10001000001


für 10^20 ist das normalisierte ergebnis 1.010110101111000111010111100010110101100011000100000000000000000000
für 10^20 + 1 ist es
1.010110101111000111010111100010110101100011000100000000000000000001

wenn ich nun die mantisse bilde benötige ich 52 bits
die mantisse sieht nun bei beiden gleich aus
nämlich
0101101011110001110101111000101101011000110001000000

achja 128 bits würden reichen...
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Soviele Zahlen für 'ne einfache Erklärung? Wieviele Dezimalstellen haben 52 (bzw. 53 inkl. Normalisierung)? [c]lg(2^53)[/c] doch wohl und das sind halt ca. 16. Diese Zahl ist um einiges einfacher zu behalten als ständig die gesamte Theorie zu rezitieren.
 

Discordia

Mitglied
Oh man ehj schon wieder voll den Denkfehler gemacht -.- Hab einfach mal 10^20 nicht in Binär umgerechnet. *Klatsch Hand gegen die Stirn*
Danke für die Geduld :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
L Und schon wieder :=( Java Basics - Anfänger-Themen 3
J Schon wieder Rekursionsproblem Java Basics - Anfänger-Themen 3
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
C jar als Applet einbinden will schon wieder nicht Java Basics - Anfänger-Themen 7
T schon wieder ausführbare .jar-dateien Java Basics - Anfänger-Themen 2
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
W Schon wieder Taschenrechner Java Basics - Anfänger-Themen 13
F Schon wieder replace Java Basics - Anfänger-Themen 7
L Schon wieder ClassLoader bzw. Classpath :-( Java Basics - Anfänger-Themen 3
S Schon wieder ein Problem - diesmal sortieren Java Basics - Anfänger-Themen 8
G Compiler hängt schon wieder Java Basics - Anfänger-Themen 14
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
nbergmann eclipse schon mit "HalloWelt" unverständlich. Java Basics - Anfänger-Themen 4
Naxon89 Threads Android AysncTask => Überprüfen, ob ein Ergebniss schon vorliegt Java Basics - Anfänger-Themen 5
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
M Suchfunktion schon bei Teilen des Wortes Java Basics - Anfänger-Themen 4
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
N kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 1
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
M In Netbeans kein Problem, im Terminal schon Java Basics - Anfänger-Themen 3
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M Kein Sound in der .jar, davor schon Java Basics - Anfänger-Themen 6
Luk10 Serialisierung bei schon vorhandener Datei Java Basics - Anfänger-Themen 15
H "Adressbuch" erstellen - Problem schon bei Datumsüberprüfung Java Basics - Anfänger-Themen 9
A Aufruf einer externen schon laufenden Anwendung Java Basics - Anfänger-Themen 3
K kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 2
G integer schon initalisiert Java Basics - Anfänger-Themen 11
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
A Fehler schon bei kleinigkeiten Java Basics - Anfänger-Themen 9
S kann man das kürzer schreiben? bzw gibts dafür schon was? Java Basics - Anfänger-Themen 6
G Schon die Installation nicht hinbekommen ? Java Basics - Anfänger-Themen 4
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
M imageicon aus jar (ja hab die suchfunktion schon benutzt :)) Java Basics - Anfänger-Themen 2
G Button schon gedrückt wenn "mouseOver" Java Basics - Anfänger-Themen 3
B schon beim einsteiger-beispiel durchgefallen. Java Basics - Anfänger-Themen 2
B schon mal mit JavaBeans Activation Framework gearbeitet? Java Basics - Anfänger-Themen 2
S Schon jetzt problem =(=( Java Basics - Anfänger-Themen 51
R Abfragen, ob schon ein Eintrag in der HashMap steht Java Basics - Anfänger-Themen 11
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Datentypen Verdrehte Wörter wieder herstellen Java Basics - Anfänger-Themen 21
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
M Schleifenergebnis in selbiger wieder verwenden Java Basics - Anfänger-Themen 7
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
N Methode auslagern mal wieder Java Basics - Anfänger-Themen 8
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
I SHA512 verschlüsseln und dann wieder auslesen? Java Basics - Anfänger-Themen 35
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben