2016-06-05 14 views
0

In Mariadb oder anderen sind Dezimalwerte in numerischen Spalten nicht in der Berechnung enthalten. Zum Beispielnumerische Spalten ignorieren Dezimalwerte in Mariadb?

MariaDB [mydb]> create table test (a decimal(5,0),b double(5,0)); 
MariaDB [mydb]> insert into test values (1.5,1.5); 
MariaDB [mydb]> insert into test values (1.5,1.5); 
MariaDB [mydb]> select format(sum(a),3) from test; 
+------------------+ 
| format(sum(a),3) | 
+------------------+ 
| 4.000   | 
+------------------+ 
MariaDB [mydb]> select sum(b) from test; 
+--------+ 
| sum(b) | 
+--------+ 
|  2 | 
+--------+ 

Warum geben sie nicht "3" zurück, was ich will? Und warum sind ihre Renditen unterschiedlich?

Antwort

0

Die (m,0) sagt store0 Dezimalstellen. Also, 1.5 wird aufgerundet (oder runter?) Zu 2 (oder 1?).

Die SUM() Funktion arbeitet auf, was gespeichert, und weiß nichts über das Original 1.5.

DECIMAL(5.0) sagt, nur 5 Ziffern auf der linken Seite der Dezimalstelle und keine auf der rechten Seite zu halten.

DOUBLE(5.0) sagt noch schlimmere Dinge; benutze es nicht. Verwenden Sie einfach DOUBLE.

+0

in Excel zum Beispiel, obwohl 3 Dezimalstellen angezeigt werden, Dezimalzahlen so viel wie es gespeichert ist und jede Berechnungsfunktion berücksichtigt alle diese Dezimalstellen. Wie kann ich mit Mariadb umgehen, wenn ich für sehr genaue Ergebnisse einschließlich Dezimalzahlen so viel wie es berechnen möchte? –

+0

Verwenden Sie "DOUBLE" _without_ das '(m, n)' Qualifikationsmerkmal. Der Punkt ist, dass 'DOUBLE (5,0)' sagt, um _vor dem Speichern abzukürzen. –

+0

Danke für Hilfe, das ist was ich will. –

Verwandte Themen