Symfony2アプリケーション用にDoctrine2の財務数値を保持するために、10進数フィールドを作成しています。
現在、次のようになっています。
/**
* @ORM\Column(type="decimal")
*/
protected $rate;
値を入力し、その値がデータベースに保持されると、整数に丸められました。私はフィールドの精度とスケールのタイプを設定する必要があると推測していますが、彼らが何をするのかを正確に説明する誰かが必要ですか?
Doctrine2ドキュメント は次のように述べています:
precision:10進数(正確な数値)列の精度(10進数列にのみ適用)
スケール:10進数(正確な数値)列のスケール(10進数列にのみ適用)
しかし、それは私にひどいことを教えてくれません。
私は精度が丸める小数点以下の桁数だと推測しているので、それは2であるべきだと思いますが、スケールとは何ですか?スケールは有効数字ですか?
私のフィールド宣言はこれでしょうか? :-
/**
* @ORM\Column(type="decimal", precision=2, scale=4)
*/
protected $rate;
DoctrineはSQLタイプに似たタイプを使用します。 10進数は、(floatとは異なり)固定精度型です。
MySQLドキュメント から取得:
DECIMAL列の宣言では、精度とスケールを指定できます(通常は指定されます)。例えば:
給与DECIMAL(5,2)
この例では、5が精度で、2がスケールです。精度は値に格納される有効桁数を表し、スケールは小数点以下に格納できる桁数を表します。
標準SQLでは、DECIMAL(5,2)が5桁と2桁の10進数で任意の値を格納できる必要があるため、給与列に格納できる値の範囲は-999.99〜999.99です。
簡単なメモ:属性の精度とスケールから引用符を削除する必要がありました。
@ORM\Column(type="decimal", precision=8, scale=2)
@Column(type="decimal", precision=5, scale=2) means 123.45
* @ORM\Column(type="decimal", precision=10, scale=2)