Arithmetischer überlauffehler beim konvertieren von float-Datentyp numeric mit positiven Exponenten, aber nicht negativen Exponenten

Meine numeric-Spalte festgelegt ist (38,19), aber ich bekomme bizarre arithmetischer überlauf-Fehler.

Was FUNKTIONIERT:

1a) INSERT INTO sen.numeric_table VALUES('MaxUBInt', 1844674407370955161);
1b) INSERT INTO sen.numeric_table VALUES('SmallestFloatBy10', 1.175494351e-39);

Was NICHT FUNKTIONIERT:

2a) INSERT INTO sen.numeric_table VALUES('MaxFloat', 3.402823466e+38);
2b) INSERT INTO sen.numeric_table VALUES('MaxFloatBy10', 3.402823466e+39);

Was ich nicht verstehe:

1) sollte Die Spalte zulassen, dass jede Eingabe höchstens insgesamt 38 Ziffern sowie nicht mehr als 19 stellen nach dem Dezimaltrennzeichen. Wenn dies wahr ist, warum tut (1b) Arbeit, wenn ich deutlich über 38 Gesamtanzahl der Ziffern? (sowie die überschreitung 19 stellen Genauigkeit nach dem Komma)

Dank!

  • 1b gerundet werden, um fit in die max Anzahl der Ziffern nach dem Komma (das Ergebnis ist wahrscheinlich 0). Aber größere zahlen führen zu einem überlauf. Und Sie haben nur 19 Ziffern vor dem Komma (19+19=38), die Sie eindeutig überschreiten mit Ihren großen Eingängen
  • Danke! Genau das, was ich brauchte.
InformationsquelleAutor BlueBucket7 | 2014-08-06
Schreibe einen Kommentar