gegen die zange hilft dann wohl N[] ......
> -----Ursprüngliche Nachricht-----
> Von: Jens-Peer Kuska [SMTP:kuska@XXXXXXX.de]
> Gesendet am: Monday, October 07, 2002 9:03 AM
> An: Wolfgang Ludwig
> Cc: Deutsche Mathematica News Group
> Betreff: Re: seltsam - gelöst
>
> Hmm,
>
> warum das so ist ? Computer rechnen in Bin"ar Darstellung und
> mit endlich vielen Stellen.
> Eine Zahl, die sich in einem Zahlensystem als *endlicher*
> Bruch darstellen l"asst z. B. 0.1 (im Dezimalsystem)
> kann in einem anderen Zahlensystem ein
> *unendlicher* Bruch sein und
> daher nicht mehr in die endlichen Stellen passen. Der endliche
> Dezimalbruch 1/10 ist im Bin"arsystem
> ____
> 0.001100
>
> wobei der lange Strich (wie "ublich) eine unendliche Wiederholung
> der Ziffernfolge anzeigt (RealDigits[0.1, 2]).
> Die unendlichen Stellen m"ussen gerundet werden weshalb 2/3
> als Dezimalzahl im Computer 0.66666666667 ist und nicht
> _
> 0.6
>
> Mit diesen Rundungsfehlern haben Leute die numerisch Rechnen
> gelernt zu leben. Eine Computer Algebra hat allerdings ein
> Problem, weil sie ja eingetlich auch rundungsfrei arbeiten
> k"onnte wenn man sie nur l"asst. Wenn man in Mathematica einen
> Dezimalpunkt eingibt, so muss man sich dar"uber klar sein,
> das das System dann wieder Rundungsfehler macht. Will
> man keine Rundungsfehler, kann aber den Finger nicht vom
> Dezimalpunkt lassen dann hilft Rationalize[].
>
> Noch besser ist es allerdings, mit einer Zange die Tasten mit dem
> Punkt "." aus der Tastatur zu brechen und wegzuwerfen.
>
> Gruss
> Jens
>
>
> Wolfgang Ludwig wrote:
> >
> > Liebe Mathematica Kenner
> >
> > Das vorhin beschriebene Problem habe ich nun doch schneller als erwartet
> > gelöst, allerdings ohne zu verstehen warum.
> > Mit einem kleinen Rundungsprogramm habe ich es geschafft, Mathematica
> > das machen zu lassen, was ich beabsichtigte:
> >
> > Das Problem:
> >
> > FractionalPart[Log[10, #]] & /@ {0.1, 1., 10., 100., 1000., 10000.,
> > 100000.,
> > 1000000., 10000000.}
> > liefert
> >
> > {-1., 0., 0., 0., 1., 0., 0., 1., 0.}
> >
> > anstelle von
> >
> > {0., 0., 0., 0., 0., 0., 0., 0., 0.}
> >
> > Warum das so ist, habe ich nicht verstanden. Aber es geht mit dem
> > untenstehenden Rundungsprogramm:
> >
> > FractionalPart[Round[Log[10, #], 10]] & /@ {0.1, 1., 10., 100.,
> > 1000., 10000., 100000., 1000000., 10000000.}
> >
> > {0., 0., 0., 0., 0., 0., 0., 0., 0.}
> >
> > Unprotect[Round];
> > Round[x_, n_] :=
> > Module[{a, nR},
> > nR = Round[n];
> > a = 10^nR;
> > (Round[a x] // N)/a
> > ];
> > Protect[Round];
> >
> > Danke fürs Mitdenken
> >
> > Wolfgang Ludwig
> > --
> > =============================
> > Dr. Wolfgang Ludwig
> > managing director
> > STL Systemtechnik Ludwig GmbH
> > Max-Stromeyer-Str. 116
> > D-78467 Konstanz
> > 7531-892888-0 (phone)
> > 7531-892888-88 (fax)
> > www.stl-gmbh.de
> > =============================
>