App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[JAVA] Zahlen addieren ungenau!?
- Ersteller MyKron
- Erstellt am
MyKron
Commodore Special
- Mitglied seit
- 15.01.2002
- Beiträge
- 499
- Renomée
- 1
- Standort
- Berlin
- Aktuelle Projekte
- rosetta@home
- Meine Systeme
- i7-5820K, Ryzen 5 2600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- IBM Lenovo T60
- Prozessor
- Intel i7-5820K
- Mainboard
- Asus X99
- Kühlung
- Mugen II
- Speicher
- 32 GB
- Grafikprozessor
- NVIDIA GTX970
- Display
- DELL U2715H und NEC 2070nx
- SSD
- Samsung 850 (512) und 750 (256) Evo
- HDD
- 1TB WD Blue
- Optisches Laufwerk
- Samsung DVD Brenner
- Soundkarte
- onboard
- Gehäuse
- Nanoxia Deep Silence 1 Rev. B schwarz
- Netzteil
- BeQuite Straight Power
- Betriebssystem
- Linux Mint 17.3
- Webbrowser
- FF
Hi Forum!
Ich habe vor einem Monat angefangen Java zu lernen, jetzt sitze ich am ersten Programm und stolpere ueber folgendes Problem:
liefert mir die folgende Ausgbe:
-0.5
-0.4
-0.3
-0.20000002
-0.10000002
-1.4901161E-8
0.09999999
0.19999999
0.29999998
0.39999998
0.49999997
Hab ich was bei den Datentypen falsch gemacht??
Wenn ich die Genauigkeit auf Double erhoehe hab ich das Problem auch.
Ich habe vor einem Monat angefangen Java zu lernen, jetzt sitze ich am ersten Programm und stolpere ueber folgendes Problem:
Code:
for (float temp = -0.5F; temp<=0.5F; temp = temp + 0.1F){
System.out.println(temp);
}
liefert mir die folgende Ausgbe:
-0.5
-0.4
-0.3
-0.20000002
-0.10000002
-1.4901161E-8
0.09999999
0.19999999
0.29999998
0.39999998
0.49999997
Hab ich was bei den Datentypen falsch gemacht??
Wenn ich die Genauigkeit auf Double erhoehe hab ich das Problem auch.
Dizzy_Ti
Vice Admiral Special
Mit float/double kann man nicht 100%ig genau rechnen.
Die Fehler kommen dadurch das man Gleitkomma Zahlen nicht immer in Bits ausdrücken kann, deswegen gibt es kleine Rundungsfehler
EDIT:
Btw: Warum macht du nicht die Schleife mit Integer Werten und teilst durch 10?
Die Fehler kommen dadurch das man Gleitkomma Zahlen nicht immer in Bits ausdrücken kann, deswegen gibt es kleine Rundungsfehler
EDIT:
Btw: Warum macht du nicht die Schleife mit Integer Werten und teilst durch 10?
Nim Integer immer wenn möglich (bzw. es nicht zuviel Aufwand macht).
1.0 lässt sich nicht genau als Fließkommazahl darstellen, allerdings hat ein float auch nur 32bit. 64bit floats bekommst du mit "double".
1.0 lässt sich nicht genau als Fließkommazahl darstellen, allerdings hat ein float auch nur 32bit. 64bit floats bekommst du mit "double".
MyKron
Commodore Special
- Mitglied seit
- 15.01.2002
- Beiträge
- 499
- Renomée
- 1
- Standort
- Berlin
- Aktuelle Projekte
- rosetta@home
- Meine Systeme
- i7-5820K, Ryzen 5 2600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- IBM Lenovo T60
- Prozessor
- Intel i7-5820K
- Mainboard
- Asus X99
- Kühlung
- Mugen II
- Speicher
- 32 GB
- Grafikprozessor
- NVIDIA GTX970
- Display
- DELL U2715H und NEC 2070nx
- SSD
- Samsung 850 (512) und 750 (256) Evo
- HDD
- 1TB WD Blue
- Optisches Laufwerk
- Samsung DVD Brenner
- Soundkarte
- onboard
- Gehäuse
- Nanoxia Deep Silence 1 Rev. B schwarz
- Netzteil
- BeQuite Straight Power
- Betriebssystem
- Linux Mint 17.3
- Webbrowser
- FF
vielen dank für die hinweise, leider macht der code sehr viel aufwand wenn ich integer benutzter, ich werde aber wohl nicht drum herum kommen. das ganze projekt wird immer komplizierter, das habe ich irgendwie in einer andren sprache schon mal leichter geschafft glaube ich. gibt es eine alternative zu Applets
Na sonst nimm doch einfach doubles, die sind ^2 mal so genau
Allerdings musst du bei Floats immer auf == verzichten, und damit hat jede Sprache ihre Probleme - also wenn du bei einer anderen Sprache Floats nimmst hast du das selbe Problem.
Allerdings musst du bei Floats immer auf == verzichten, und damit hat jede Sprache ihre Probleme - also wenn du bei einer anderen Sprache Floats nimmst hast du das selbe Problem.
MyKron
Commodore Special
- Mitglied seit
- 15.01.2002
- Beiträge
- 499
- Renomée
- 1
- Standort
- Berlin
- Aktuelle Projekte
- rosetta@home
- Meine Systeme
- i7-5820K, Ryzen 5 2600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- IBM Lenovo T60
- Prozessor
- Intel i7-5820K
- Mainboard
- Asus X99
- Kühlung
- Mugen II
- Speicher
- 32 GB
- Grafikprozessor
- NVIDIA GTX970
- Display
- DELL U2715H und NEC 2070nx
- SSD
- Samsung 850 (512) und 750 (256) Evo
- HDD
- 1TB WD Blue
- Optisches Laufwerk
- Samsung DVD Brenner
- Soundkarte
- onboard
- Gehäuse
- Nanoxia Deep Silence 1 Rev. B schwarz
- Netzteil
- BeQuite Straight Power
- Betriebssystem
- Linux Mint 17.3
- Webbrowser
- FF
wie ich oben schrieb, nimmt sich das nichts, ob ich nun double oder float nehme, die nachkomma stellen erhöhen sich nur, ich will doch nur ein koordinatensystem beschriften, vielleicht schneide ich die nachkomma stellen einfach ab nd überlege mir einen algorythmus, der das ab der 2. stelle nach allen nachkomma nullen tut, falls der wert kleiner al 1 ist. ich bastle noch ein wenig, zumindest weiss ich jetzt, dass es nicht an mir liegt!
Du kannst den Wert auch einfach runden, oder bei der Ausgabe nur eine Nachkommastelle ausgeben (die weggelassen wird wenn die 0 ist) oder sowas in der Art machen
Jetzt frag mich aber nicht nach den Rundungsfunktionen, da musst du googeln (findet sich sicher schnell was).
Jetzt frag mich aber nicht nach den Rundungsfunktionen, da musst du googeln (findet sich sicher schnell was).
MyKron
Commodore Special
- Mitglied seit
- 15.01.2002
- Beiträge
- 499
- Renomée
- 1
- Standort
- Berlin
- Aktuelle Projekte
- rosetta@home
- Meine Systeme
- i7-5820K, Ryzen 5 2600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- IBM Lenovo T60
- Prozessor
- Intel i7-5820K
- Mainboard
- Asus X99
- Kühlung
- Mugen II
- Speicher
- 32 GB
- Grafikprozessor
- NVIDIA GTX970
- Display
- DELL U2715H und NEC 2070nx
- SSD
- Samsung 850 (512) und 750 (256) Evo
- HDD
- 1TB WD Blue
- Optisches Laufwerk
- Samsung DVD Brenner
- Soundkarte
- onboard
- Gehäuse
- Nanoxia Deep Silence 1 Rev. B schwarz
- Netzteil
- BeQuite Straight Power
- Betriebssystem
- Linux Mint 17.3
- Webbrowser
- FF
leider gibt es ja kein runden in Java, ich müsste zum beispiel um 10.25 zu runden den wert mal hundert nehmen ihn in einen int umwandeln und wieder durch hunder teilen
was aber wenn ich nicuht weiss wie die zahl aussieht?? sie kann auch 0.0001025 sein oder 10250, da wird das dann schon wieder umständlich!
Code:
((float)((int)(10.25*100)))/100
was aber wenn ich nicuht weiss wie die zahl aussieht?? sie kann auch 0.0001025 sein oder 10250, da wird das dann schon wieder umständlich!
Bei der Ausgabe muss Java auf jeden Fall irgendwie Rundungsfunktionen bieten...
http://www.google.de/search?q=java+round+float+output&ie=UTF-8&hl=de&btnG=Google-Suche&meta=
Gleich der 3. Treffer passt haargenau, ich hab doch gesagt googeln hilft dir
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21008374.html
da wird zb. irgendwo das hier genommen:
Math.round()
Also kennt Java Rundungsfunktionen, hätte mich auch arg gewundert wenn nicht.
http://www.google.de/search?q=java+round+float+output&ie=UTF-8&hl=de&btnG=Google-Suche&meta=
Gleich der 3. Treffer passt haargenau, ich hab doch gesagt googeln hilft dir
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21008374.html
da wird zb. irgendwo das hier genommen:
Math.round()
Also kennt Java Rundungsfunktionen, hätte mich auch arg gewundert wenn nicht.
MyKron
Commodore Special
- Mitglied seit
- 15.01.2002
- Beiträge
- 499
- Renomée
- 1
- Standort
- Berlin
- Aktuelle Projekte
- rosetta@home
- Meine Systeme
- i7-5820K, Ryzen 5 2600
- BOINC-Statistiken
- Folding@Home-Statistiken
- Mein Laptop
- IBM Lenovo T60
- Prozessor
- Intel i7-5820K
- Mainboard
- Asus X99
- Kühlung
- Mugen II
- Speicher
- 32 GB
- Grafikprozessor
- NVIDIA GTX970
- Display
- DELL U2715H und NEC 2070nx
- SSD
- Samsung 850 (512) und 750 (256) Evo
- HDD
- 1TB WD Blue
- Optisches Laufwerk
- Samsung DVD Brenner
- Soundkarte
- onboard
- Gehäuse
- Nanoxia Deep Silence 1 Rev. B schwarz
- Netzteil
- BeQuite Straight Power
- Betriebssystem
- Linux Mint 17.3
- Webbrowser
- FF
leider ist math.round nicht das was ich brauche, wie ich oben beschrieben habe, aber vielleicht hilft BigDecimal mir weiter, das mach ich aber nicht mehr heute nacht!!
http://www.torsten-horn.de/techdocs/java-basics.htm#FormatierungRundung
http://www.torsten-horn.de/techdocs/java-basics.htm#FormatierungRundung
0,1 ist das Problem, das läßt sich mit Floats nicht exakt darstellen.
Die Lösung heißt Fixed Point Arithmetik und genau das macht man mit BigDecimal: Tricks and traps with floating point and decimal numbers
Die Lösung heißt Fixed Point Arithmetik und genau das macht man mit BigDecimal: Tricks and traps with floating point and decimal numbers
Ähnliche Themen
- Antworten
- 469
- Aufrufe
- 77K
- Antworten
- 0
- Aufrufe
- 28K
- Antworten
- 0
- Aufrufe
- 52K