Math.cos liefert komische Werte

mihe7

Top Contributor
Das hat verschiedene Ursachen. Unmittelbar einleuchtend dürfte sein, dass Du nie genaue Werte erhalten wirst, sobald π im Spiel ist, wie im Bogenmaß, denn diese Zahl hat nun einmal unendlich viele Stellen.

Abgesehen davon ist 6.123233995736766E-17 = 0,00000000000000006123233995736766 - das sollte für die meisten Anwendungen wohl nah genug an 0 sein, oder? ;)
 
X

Xyz1

Gast
Java:
		System.out.println(Math.cos(Math.PI / 2));
		System.out.println(Math.sin(Math.PI));
		System.out.println(Math.cos(Math.toRadians(90)));
		System.out.println(Math.sin(Math.toRadians(180)));
		System.out.println(Math.cos(Math.PI / 2) == Math.cos(Math.toRadians(90))
				&& Math.sin(Math.PI) == Math.sin(Math.toRadians(180)));

Weil zwei Dinge darein spielen:
1. cos und sin sind nicht genau und berechnen nur Annäherungswerte,
2. die Argumente Pi/2 und Pi sind irrationale Zahlen und können also nicht zu 100 % genau angegeben werden.

Aber 3. wenn Dich das stört solltest du runden. ;)
 

White_Fox

Top Contributor
Neulich hörte ich, wie jemand auf die "Mantissengläubigkeit" schimpfte, die sich heutzutage breitmacht.

Gewöhne dir lieber folgendes an: Wenn die Zahl mehr Stellen hat als du auf einen Blick zählen kannst (d.h. du darfst nicht zählen müssen, sondern mußt sofort sehen können daß es z.B. nur drei Stellen sind), dann schaue ob hinten ein 'E' steht und sieh dir die Zahl danach an, den Exponenten.

Und gewöhne dir an, wenigstens bis 9/-9 in SI-Vorsätzen zu denken. xE-3 -> Millix -> schon recht klein, xE-6 -> Mikrox, interessiert schon nur noch in Sonderfällen, xE-9 -> Nanox -> wann hast du jemals ernsthaft Nanoliter, Nanogramm oder Nanometer (in diesem Bereich kannst du anfangen Atome zu zählen) verwendet, xE-12 -> Picox -> praktisch außerhalb jeder Nachweismethode von irgendwas.
 

mihe7

Top Contributor
Um die Größenordnung mal bildhaft darzustellen, kann man mal ein wenig rechnen: die Sonne ist 149,6 Mio. Kilometer von der Erde entfernt. Stellt man sich nun eine Linie von der Erde bis zur Sonne vor, wie groß wäre die Abweichung zwischen der tatsächlichen und der berechneten Lage (Kosinusrichtung) auf der Sonne, wenn der Kosinus mit einem Fehler von 6.123233995736766E-17 berechnet wird?

149 600 000 000 m x 6.123233995736766E-17 = 0,000009160358057622203 m, also knapp 10 µm. Ein dünnes Haar hat eine Dicke von 20 µm...
 

White_Fox

Top Contributor
die Sonne ist 149,6 Mio. Kilometer von der Erde entfernt
Das sind ja nur 149,6x10^-9 Meter, bzw 149,6Mm (Megameter, etwas ungewöhnlich, aber richtig).
Oder 1,496E11 Meter.

Das sollte jedem Studenten und Lehrling jeder technischen Fachrichtung Tag und Nacht um die Ohren gehauen werden: Man gebe ihnen ein Gewicht von 1kg und 1g und lasse sie beides solange in der Hand wiegen (alternativ lasse man es ihnen auf den Fuß fallen), bis sie ein Gefühl für den Faktor 1.000 entwickelt haben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Potenzieren mit rationalen Potenzen ohne Math.pow Allgemeine Java-Themen 16
T Math.random Allgemeine Java-Themen 9
Javafan01 Deklarieren einer Math.random() Zufallszahl Allgemeine Java-Themen 16
O Best Practice Laufzeitvergleich Math.sqrt() aus Java und sqrt() aus C++ Allgemeine Java-Themen 1
J Methoden Math.abs Allgemeine Java-Themen 3
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J Commons Math 3.0 Multiple Regression Allgemeine Java-Themen 4
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
U Math.Random anders verteilen Allgemeine Java-Themen 4
V Math.log auf meine Art zu ungenau Allgemeine Java-Themen 15
H Math.acos(10) => NaN Allgemeine Java-Themen 11
E Warum kann Math nicht instanziert werden? Allgemeine Java-Themen 17
h0b0 WTF? - Problem mit Math.pow() Allgemeine Java-Themen 6
A Wird Math.sin bzw. sinus auf Maschinencode abgebildet Allgemeine Java-Themen 6
isowiz Unerklärliches Problem mit Math.pow :( Allgemeine Java-Themen 4
M Math-String-Formel berechnen lassen Allgemeine Java-Themen 4
C Math.random() vs Random Allgemeine Java-Themen 5
S Random() vs Math.random Allgemeine Java-Themen 4
H Math.random() Allgemeine Java-Themen 3
D java.lang.Math fehlerhaft? Allgemeine Java-Themen 18
8u3631984 Argument Captor liefert NULL zurück Allgemeine Java-Themen 2
DiekleineRatte77 Schlüsselworte ANSI Konverter liefert UTF-8 Allgemeine Java-Themen 7
I HTML einer Website auslesen liefert nur head Allgemeine Java-Themen 6
A Datentypen Long.valueOf liefert kein "L" am Ende Allgemeine Java-Themen 3
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
C Object.equals() liefert falschen Wert? Allgemeine Java-Themen 14
Q GregorianCalendar Methode add liefert komische Werte Allgemeine Java-Themen 3
T Datentypen ArrayUtils.indexOf( ... ) liefert -1 obwohl Wert scheinbar enthalten ist Allgemeine Java-Themen 15
T SimpleDateFormat.parse() liefert falschen Tag Allgemeine Java-Themen 2
T java.uil.Random liefert negative Werte Allgemeine Java-Themen 2
I newInstance() liefert null zurück Allgemeine Java-Themen 4
Z new Date() liefert falsche Uhrzeit Allgemeine Java-Themen 12
S Newton-Verfahren liefert nur 1 Wert Allgemeine Java-Themen 3
J Liefert new URL(String) gecachte Webseiten? Allgemeine Java-Themen 15
S HashMap containsKey liefert immer false zurück Allgemeine Java-Themen 15
M Kugelschnittberechnung liefert falsche Werte Allgemeine Java-Themen 4
A md5 liefert unterschiedliche Testsummen? Allgemeine Java-Themen 4
S FOP liefert fehlerhafte PDF Allgemeine Java-Themen 13
S instanceof liefert true, aber cast funktioniert nicht! Allgemeine Java-Themen 6
MasterEvil File.createTempFile liefert nur kurzen Pfad mit Tilde Allgemeine Java-Themen 3
M BufferedReader.read(char[] cbuf) liefert falsche Werte? Allgemeine Java-Themen 4
N contains(.) liefert nicht erwartetes Ergebnis Allgemeine Java-Themen 3
H JNI: loadLibrary liefert UnsatisfiedLinkError Allgemeine Java-Themen 2
J Base64 Kodierung liefert korrupte Dateien Allgemeine Java-Themen 3
S ´Locale.getDefault() liefert en Allgemeine Java-Themen 10
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
S aFile.delete() liefert false - Gründe ? Allgemeine Java-Themen 2
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
T Komische Zeichen im Zusammenhang mit Serializable interface Allgemeine Java-Themen 13
B Komische Exception Allgemeine Java-Themen 4
G Komische Reihenfolge mit dynamischem Proxy Allgemeine Java-Themen 9
T Komische Verhaltensweise Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben