Fehler im Compiler???
Anando Eger
anando at aneg-dv.de
Di Mai 22 10:19:47 CEST 2001
Bernhard Eversberg schrieb:
>
> Das von Allers berichtete Rechenproblem scheint auf einem Fehler
> in Microsofts C++ zu beruhen. Auf sowas kommt man immer zuletzt...
> Es ist so: Im Programm steht, etwas vereinfacht:
>
> iZ=zahl(iV);
>
> wobei iZ und die Funktion zahl() als Gleitkomma definiert sind,
> iV ist die Zeichenkette der internen Variablen.
> Wenn nun iV="20010519" ist, kommt iZ=20010520 heraus.
> Wenn man sich den Funktionswert aber zum Testen an der Stelle
> anzeigen laesst, betraegt er korrekt 20010519. Die Zuweisung
> mit dem =-Zeichen addiert an der Stelle also eigenmaechtig eine 1.
> Mit "20010518" passiert das nicht, mit "20010619" und mit
> "20010719" aber passiert derselbe Fehler.
> Mit "20010529" aber kommt eins WENIGER raus!
> Und mit 2000 statt 2001 oder mit 9999 ist es dasselbe. Aber mit "200"
> an der Stelle, oder 999 (also 1 Stelle weniger) ist alles richtig.
> Da soll man nicht verrueckt werden? Noch ist keine Loesung gefunden...
Sehr geehrter Herr Eversberg,
sie schreiben, daß die Zahlen intern als Gleitkomma definiert sind -
haben Sie vielleicht "float" verwendet? Wenn ja, wäre der
Fehler damit erklärbar, da float mit 23 bit Mantisse (+ 1 Vorzeichen)
nur maximal +/- 8388607 genau darstellen kann. Dann ließe sich der
Effekt durch Verwendung von double oder zur Sicherheit long double
beheben ...
Viele Grüße
Anando Eger
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : anando.vcf
Dateityp : text/x-vcard
Dateigröße : 296 bytes
Beschreibung: Visitenkarte f?r Anando Eger
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20010522/e829fb8b/attachment.vcf>
Mehr Informationen über die Mailingliste Allegro