Datenbank – Was bedeuten Skalierung und Genauigkeit, wenn Sie in Doctrine 2 einen Dezimalfeldtyp angeben?

Ich erstelle ein Dezimalfeld für eine Finanzkennzahl in Doctrine2 für meine Symfony2-Anwendung.

Derzeit sieht es so aus:

/**
 * @ORM\Column(type="decimal")
 */
protected $rate;

Als ich einen Wert eingegeben habe und der Wert in der Datenbank gespeichert wurde, wurde er auf eine ganze Zahl gerundet. Ich vermute, dass ich die Genauigkeits- und Skalentypen für das Feld festlegen muss, aber ich brauche jemanden, der genau erklärt, was sie tun?

Die Doctrine2 documentation sagt:

precision: The precision for a decimal (exact numeric) column (Applies only for decimal column)

scale: The scale for a decimal (exact numeric) column (Applies only for decimal column)

Aber das sagt mir nicht viel.

Ich vermute, Genauigkeit ist die Anzahl der Dezimalstellen, auf die gerundet werden soll. Ich gehe davon aus, dass dies 2 sein sollte, aber was ist der Maßstab? Ist der Maßstab die signifikanten Zahlen?

Sollte meine Felddeklaration so sein? : –

/**
 * @ORM\Column(type="decimal", precision=2, scale=4)
 */
protected $rate;
Doctrine verwendet ähnliche Typen wie die SQL-Typen. Dezimal ist ein fester Genauigkeitstyp (im Gegensatz zu Floats).

Aus dem MySQL documentation genommen:

In a DECIMAL column declaration, the precision and scale can be (and usually is) specified; for example:

salary DECIMAL(5,2)

In this example, 5 is the precision and 2 is the scale. The precision represents the number of significant digits that are stored for values, and the scale represents the number of digits that can be stored following the decimal point.

Standard SQL requires that DECIMAL(5,2) be able to store any value with five digits and two decimals, so values that can be stored in the salary column range from -999.99 to 999.99.

Ursprüngliche URL:https://stackoverflow.com/questions/14940574/what-do-scale-and-precision-mean-when-specifying-a-decimal-field-type-in-doctrin

Zitieren Sie bitte die URL dieses Artikels: Datenbank – Was bedeuten Skalierung und Genauigkeit, wenn Sie in Doctrine 2 einen Dezimalfeldtyp angeben?