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