[Vienna-pm] dbi oracle - bei gleitkommazahl voranstehende 0 abgeschnitten

Peter J. Holzer hjp-vienna-pm-list at hjp.at
Wed Feb 11 12:35:34 PST 2009


On 2009-02-11 13:41:13 +0100, bernhard.massong at balrog.at wrote:
> ich hoffe, dass ich mit meiner Frage hier richtig bin.
> 
> Ich greife mit DBI auf eine Oracle-Datenbank zu und speichere das
> Ergebnis als Textfile ab.
> Dabei hole ich mir unter anderem Werte des Datentyps Number. Bei
> Gleitkommazahlen von -1 bis 1 wird dabei jedoch die führende 0
> entfernt z.b. aus 0.53 wird .53 Mir ist leider nicht klar weshalb das
> so ist

Weil Oracle das so hübsch findet (das ist in englischsprachigen Ländern
durchaus üblich).

DBD::Oracle liefert Zahlen prinzipiell als String zurück und überlässt
die Umwandlung normalerweise der Oracle Client Library. Das hat einen
guten Grund: Zahlen in Oracle haben bis zu 38 Dezimalstellen, in Perl
jedoch typischerweise nur 53 Bit Mantisse - bei der Umwandlung würde
Genauigkeit verlorengehen.

Das Thema kam erst kürlich auf der dbi-users Mailinglist zur Sprache:

http://www.mail-archive.com/dbi-users@perl.org/msg31725.html ff.

> bzw. wie ich den richtigen Wert bekomme.

Wenn Dich der Genauigkeitsverlust nicht stört, addiere einfach 0 dazu.
Falls Du Zahlen so hoher Genauigkeit brauchst, sind die Module
Math::BigInt, Math::BigRat und Math::BigFloat vermutlich hilfreich.

	hp

-- 
   _  | Peter J. Holzer    | Openmoko has already embedded
|_|_) | Sysadmin WSR       | voting system.
| |   | hjp at hjp.at         | Named "If you want it -- write it"
__/   | http://www.hjp.at/ |  -- Ilja O. on community at lists.openmoko.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/vienna-pm/attachments/20090211/1bbb02b6/attachment.bin>


More information about the Vienna-pm mailing list