| |

Allgemeine DiskussionenRe: VB rechnet FALSCH | |  | Autor: Wöllmi | Datum: 21.04.03 23:14 |
| Hi alle zusammen,
ich meinte nicht, daß man Double anwenden soll damit es genauer wird,
sondern, daß man das Ergebnis selber auf die richtige Genauigkeit runden
muß, weil Double bzw. Single verwendet wird!
Ein Single reicht natürlich voll aus
129,76 sind genau 2 Stellen nach dem Komma, also brnötige ich eben keine
höhere Genauigkeit als diese beim Abziehen von 129,60.
Das Problem ist die interne Konvertierung der Datentypen!
Bitte die Folgebeziehung beachten.
Ein "single precision floating point" besteht nach IEEE754 aus 4 Byte. Aus diesen
wird per definierter Vorschrift eine Dezimalzahl gewonnen.
z.B. &h418A0000 = 17,25
0 10000011 000 1010 0000 0000 0000 0000
| | ______| |_Mantisse________________|
| |
| Exponent
Vorzeichen
Eine derartige Float -Zahl liegt im Speicher als 32 Bit Hexwert vor. Und diese Konvertierung nimmt VB scheinbar in einem Zwischenschritt vor. Bestimmt
um schneller zu rechen (Assembler). Es wird also direkt mit dem Speicherabbild
gearbeitet.
Und dies ist das Problem!
Nicht jede Zahl läßt sich "EinEin-deutig" und somit 100% genau in eine derartige
Hex-Zahl umwandlen. Es resultiert also ein minimaler Fehler, der dann zu diesem
Phänomen führt.
0,1 ist z.B. nicht genau darstellbar, da bis auf die letzte mögliche Stelle die
Bildungsvorschrift greift. Und da gibt es nunmal nur 0,0999999999.....
(0,1 => &h3DCCCCCC => 9,99999940395355E-02)
D.h. die Konvertierung Dez. in 32-Bit Float (Speicherabbild) bedeutet in diesem Fall
eine Zunahme der zu wertenden Nachkommastellen, da der Ergebniswert nicht zu
100% im IEEE Format darstellbar ist. (Thema Restfehler)
Das Problem was VB nun scheinbar hat ist, nicht zu wissen, daß der Anwender
aber ebne nur 2 Stellen nach dem Komma benötigt und somit gerundet werden muß.
Dies nun aber muß der Anwender eben selber tun!!!!!!!!
Und dies meinte ich.
Also zugegeben, Vb rechnet durch diesen Umstand scheinbar nicht ganz genau.
Doch das Problem ist eigentlich in der Natur der EDV zu suchen und mit dem
erforderlichen Hintergrundwissen leicht zu umschiffen!
Alles nur mit 0 und 1 darstellen zu wollen hat eben auch ein paar Haken!
Im Matheunterricht mußte ich früher auch immer eine Überschlagsrechnung
durchführen, um mein Ergebnis grundsätzlich als "real" oder "unmöglich"
vor der Bewertung durch den Lehrer zu beurteilen.
Auch dem heutigen Programmierer wird dies nicht abgenommen. 
Tschaui
Woellmi  |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|