Nachkommastellen

Hallo Wissende,
ich habe ein “double precision” welches intern zu viele Nachkommastellen enthält.
Intern deshalb, weil ich es nur im Dump erkennen kann.

4.3999999999999986

Ich würde diesen Wert aber gern “direkt” per SQL sehen wollen. Es wird mir aber immer nur 4.4 bzw 4.400000000000 angezeigt.

SELECT  awert, awert::numeric(40,20) as x

Gibt es da einen Geheimbefehl :slight_smile:?

Gruß Steffen

Hi Steffen,

versuch es mit der trunc funktion…

select trunc('4.3999999999999986',2)

ergebnis:4.39

Gruß Yasin

Hallo Yasin,
vielen Dank für die Antwort, aber ich will das Gegenteil :slight_smile:.
Ich will den Wert so sehen, wie er intern gespeichert ist - also inklusive aller Nachkommastellen.

Gruß Steffen

Hallo,

ich zitiere hier mal die Doku und rate dir, hier einfach den Datentyp der Spalte auf Numeric zu ändern :slight_smile: PostgreSQL: Documentation: 9.0: Numeric Types

The data types real and double precision are inexact, variable-precision numeric types.

Inexact means that some values cannot be converted exactly to the internal format and are stored as approximations, so that storing and retrieving a value might show slight discrepancies.

If you require exact storage and calculations (such as for monetary amounts), use the numeric type instead.

Hallo,
vielen Dank für die Antwort.
Den Datentyp kann ich nicht ändern (Fremdprogramm/Fremdtabelle). Auch macht es keinen Sinn, da es nur einfache Eurowerte sind und die vielen Nachkommastellen sind ein Fehler und nicht der gewünschte korrekte Wert .

Ich könnte also die Werte einfach runden und das Problem an sich wäre beseitigt.

Es wäre nur einfach schön, wenn mir PostgreSQL auch die Werte zeigen könnte, welches es intern benutzt/speichert.

Gruß Steffen

Hallo,

Wenn man den richtigen Datentyp nutzt klappt das auch. In diesem Fall ist es Typenbedingt und hat ja erstmal nix mit Postgres an sich zu tun. Ist ja auch alles dokumentiert.
Da kannst du dich bei dem bedanken, der die Daten angelegt hat :wink: