2016-04-29 1 views
1

Ich stieß oft auf dieses Problem der Dezimalstelle in MySQL! oft begegnet diese Schwierigkeit der Dezimalstelle in MySQL

Wenn ich diese Art setzen: DECIMAL(10,8)

Der Maximalwert erlaubt sind: 99.99999999!

Es sollte sein: 9999999999.99999999 nein?

Ich möchte einen maximalen Wert der Dezimalstelle mit 8 Ziffern nach dem Punkt (.).

Antwort

2

Vom documentation:

Die Erklärung Syntax für eine DECIMAL Spalte DECIMAL (M, D). Die Wertebereiche für die Argumente in MySQL 5.7 sind wie folgt:

  • M ist die maximale Anzahl der Ziffern (die Genauigkeit). Es hat einen Bereich von 1 bis 65.
  • D ist die Anzahl der Stellen rechts vom Dezimalpunkt (die Skala). Es hat einen Bereich von 0 bis 30 und ist auf der linken Seite des Dezimalpunktes nicht größer als M.

Der erste Wert ist nicht auf die Anzahl der Stellen sein, aber die Gesamtzahl der Stellen.

Deshalb ist der Wert 9999999999.99999999 mit DECIMAL(10, 8) nicht möglich: Er ist 18 Ziffern lang.

+0

Zuerst danke für Ihren Kommentar und genau, und wie kann ich das Problem lösen? Was ist die Lösung ? –

+0

Wenn Sie wirklich eine Genauigkeit von 8 Ziffern rechts vom Dezimalpunkt haben wollen, dann muss D mindestens 8 sein. Dann müssen Sie den maximalen Wert herausfinden, den Sie behandeln müssen, und M entsprechend berechnen. 'DECIMAL (18, 8)' könnte zum Beispiel '9999999999.99999999' korrekt behandeln. Die Verwendung des Float-Typs könnte ebenfalls eine gute Lösung sein. – julienc

+0

Das macht es klar, vielen Dank! –

0

Die erste Zahl ist die Gesamtzahl der Ziffern und die zweite die Anzahl der Dezimalstellen.

Für die Nummer, die Sie anfordern, versuchen Sie DECIMAL(18,8).

1

Die Art und Weise DECIMAL(x,y) funktioniert arbeiten ist x stellt die Gesamtzahl der Ziffern und y die Zahl, die nach der Dezimalstelle kommen.

10,8 bedeutet NN.NNNNNNNN.

Wenn Sie mehr wollen, müssen Sie Ihre Reichweite entsprechend vergrößern.

2

A decimal ist durch zwei Parameter definiert - DECIMAL(M, D), wo M die Gesamtzahl der Stellen ist, und D ist Anzahl der Ziffern nach dem Dezimalpunkt aus M. Um die Nummer 9999999999.99999999 richtig darzustellen, müssen Sie DECIMAL(18, 8) verwenden.

0

Sie definieren DECIMAL (Gesamtpositionen, gesamte Dezimalzahl) also denken Sie daran: die gesamte Dezimalstelle verwendet die Positionen der gesamten Positionen, wenn Sie die meisten Zahlen nach links und nach rechts möchten, FLOAT-Typ verwenden.