-
Kommazahlen beim Export
Hallo,
wie kann das bitte sein?
In einer db2 PF habe ich den Wert 19,2 gespeichert. Das Feld ist formatiert als 4/1 S. Auf diese PF greife ich per ODBC Verknüpfung aus Access zu. Ich übernehme die Daten mit einem 'SELECT INTO ....' in eine lokale Access-Tabelle.
Wenn ich das Feld in der Access-Tabelle als Double mit 15 Nachkommastellen formatiere, bekomme ich den Wert 19,2000007629395 angezeigt. Warum ?
Bin dankbar für jeden Hinweis.
Email:andreas.weikl@ils-gmbh.net
Nicht weil es schwierig ist, wagen wir es nicht, sondern weil wir es nicht wagen ist es schwierig. (Sokrates)
-
Double-Werte werden als 64-Bit intern zur 2er-Potenz gespeichert.
Ein Dezimalwert wird also umgerechnet !
Der Bereich ist dann eben
+/- 0 - 0,5 * 2 ^ X
Alle ganzen Zahlen lassen sich glatt in 2er-Potenz darstellen (als BIN-Wert).
Nachkommastellen sind allerdings fast immer Näherungswerte, da auch diese in 2er-Potenzen berechnet werden:
0,5 = 1/2
0,25 = 1/4
0,125 = 1/8
Nun ergibt sich also dass 0,2 dezimal nicht genau bei Double darstellbar ist !
0,2 = 1/8 + 1/16 + 1/128 + 1/256 + 1/2048 + 1/4096 + .....
Die gesamte Genauigkeit ist dann ca. 17 Stellen * 10^300
Daher gibt es den Feldtyp CURRENCY, bzw. für Access als Typ: Zahl Dezimal !
Da gibt es max. 18 Ziffern genau, und daher mit größeren AS/400-Dezimalfeldern z.B. dec(30,5) nicht verwendbar.
-
Aber currency macht doch wohl nix anderes als zu runden, oder ?
Email:andreas.weikl@ils-gmbh.net
Nicht weil es schwierig ist, wagen wir es nicht, sondern weil wir es nicht wagen ist es schwierig. (Sokrates)
-
Nein !
Currency wird IMMER als Ganzzahl in 16/32/64 Bit gespeichert (abhängig von der Genauigkeit), währen die Kommastelle nur "gedacht" ist und nicht wie beim Double tatsächlich einen Wert darstellt.
16 Bit max. 4 Stellen
32 Bit max. 9 Stellen
64 Bit max. 18 Stellen
Daher ist 0,2 dann auch tatsächlich 0,2 weil z.B. bei Currency(18,4) die interne Darstellung 2000 * 1/(10^4) ist.
Beim Rechnen kann es dann ggf. zu Überlauffehler kommen.
-
Okay, klasse. Dann ist das ja genau das was ich brauche.
Danke
Email:andreas.weikl@ils-gmbh.net
Nicht weil es schwierig ist, wagen wir es nicht, sondern weil wir es nicht wagen ist es schwierig. (Sokrates)
Similar Threads
-
By mican in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 18-01-07, 08:07
-
By Nergal in forum NEWSboard Drucker
Antworten: 3
Letzter Beitrag: 05-01-07, 17:11
-
By gerhardbreit in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 12-06-06, 08:23
-
By Burgsmüller in forum NEWSboard Linux
Antworten: 0
Letzter Beitrag: 29-06-05, 07:53
-
By CaddyMajor in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-05-05, 10:45
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks