Seite 1 von 3

Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 12:21 pm
von Xin
Nur mal so zum drüber nachdenken:

Man nehme ein float und weise ihm den teuflichen Wert 666,6 zu.
Anschließend ziehe man 666,5 ab und multipliziere das Ergebnis mit 10000.

Welches Ergebnis kommt raus?
(Nicht programmieren, nur drüber nachdenken und das Ergebnis unkommentiert posten - erst dann programmieren, wenn man seinen Gedanken nicht traut.)

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 12:31 pm
von cloidnerux
1000

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 1:11 pm
von bbbl
1000,0

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 1:15 pm
von fat-lobyte
1000.

Gehts hier um Mathematik oder um Floating-point ungenaugkeiten?

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 1:25 pm
von cloidnerux
Gehts hier um Mathematik oder um Floating-point ungenaugkeiten?
Ich glaube es geht im um die Floatingpoint Ungenauigkeiten, sonst hätte er nicht auf float bestanden^^

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 1:32 pm
von Xin
fat-lobyte hat geschrieben:Gehts hier um Mathematik oder um Floating-point ungenaugkeiten?
Wer sagt denn, dass Float-Point ungenau sind?
Sie tun doch genau das, was ihre Schöpfer von ihnen erwarten.

Und dieser Thread dient ja auch nur dazu, sich darüber Gedanken zu machen, welche Erwartungen man selbst hat.
cloidnerux hat geschrieben:Ich glaube es geht im um die Floatingpoint Ungenauigkeiten, sonst hätte er nicht auf float bestanden^^
Ich habe auch kein Problem, wenn Du double nimmst.

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 1:35 pm
von fat-lobyte
Xin hat geschrieben:Und dieser Thread dient ja auch nur dazu, sich darüber Gedanken zu machen, welche Erwartungen man selbst hat.
Achso. Dann möchte ich meine Antwort ändern auf:
Irgendwas zwischen 1005 und 995.

Aber wenn man zuerst die Differenz bilded und dann erst multipliziert, ist man selber schuld, wenn einem die Genauigkeit nicht passt.

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 2:36 pm
von Xin
fat-lobyte hat geschrieben:
Xin hat geschrieben:Und dieser Thread dient ja auch nur dazu, sich darüber Gedanken zu machen, welche Erwartungen man selbst hat.
Achso. Dann möchte ich meine Antwort ändern auf:
Irgendwas zwischen 1005 und 995.
Öhm.... ich hantiere hier mit recht kleinen Zahlen und Du schätzt den Fehler bei 0,5% Prozent?
Wieso nennt man Computer dann Rechner und nicht Verrechner? ^^
fat-lobyte hat geschrieben:Aber wenn man zuerst die Differenz bilded und dann erst multipliziert, ist man selber schuld, wenn einem die Genauigkeit nicht passt.
Was ist wohl schneller ausgerechnet?
(666.6 - 666.5) * 10000
oder
666.6 * 10000 - 666.5 * 10000?

Wenn man erst die Differenz bildet, dann spart man eine Multiplikation.
Erst zu subtrahieren zeigt also, dass man verstanden hat, wie man Rechnungen beschleunigt.
(Die Aussage ist so korrekt, auch wenn ihm eine gewisse Ironie in dem Zusammenhang beiliegt)

Und da der Rechenweg in der Regel nicht so einfach ist, wie hier, sondern man einen Wert einfach in eine Funktion packt, die z.B. für ihre Berechnungen erstmal Einheiten (*10000) umrechnet, aber halt die Differenz als Eingabewert hat, da bleibt einem nicht viel anderes über, als erst zu subtrahieren und dann das Ergebnis an die Funktion zu geben.

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 3:24 pm
von cloidnerux
Float: 0,0244% Abweichung
Double: 0% Abweichung

Re: Mathematik für Computerbegeisterte

Verfasst: Mi Mär 07, 2012 3:42 pm
von fat-lobyte
Xin hat geschrieben:
fat-lobyte hat geschrieben:
Xin hat geschrieben:Und dieser Thread dient ja auch nur dazu, sich darüber Gedanken zu machen, welche Erwartungen man selbst hat.
Achso. Dann möchte ich meine Antwort ändern auf:
Irgendwas zwischen 1005 und 995.
Öhm.... ich hantiere hier mit recht kleinen Zahlen und Du schätzt den Fehler bei 0,5% Prozent?
Wieso nennt man Computer dann Rechner und nicht Verrechner? ^^
Ok, ist doch ein bisschen viel...
Xin hat geschrieben:
fat-lobyte hat geschrieben:Aber wenn man zuerst die Differenz bilded und dann erst multipliziert, ist man selber schuld, wenn einem die Genauigkeit nicht passt.
Was ist wohl schneller ausgerechnet?
(666.6 - 666.5) * 10000
oder
666.6 * 10000 - 666.5 * 10000?
Schneller schon, aber ich könnte mir vorstellen, dass letzteres numerisch stabiler ist. Wenn ich das richtig verstanden habe, geht genauigkeit dann verloren, wenn man mit Zahlen sehr unterschiedlicher Größenordnung rechnet. 0.1 und 10 000 klingt sehr unterschiedlich, 666,6 und 10 000 klingt weniger unterschiedlich. Wenn ich so drüber nachdenke, dann hab ich wahrscheinlich was missverstanden.