私は反対のスタンスをとります。
FLOAT
パーセンテージ、平均などの概数を表すものです。値をアプリコードで表示するか、FORMAT()
MySQL の関数を使用して表示するときに、フォーマットを行う必要があります。
テストしないでくださいfloat_value = 1.3
。それが失敗する理由はたくさんあります。
DECIMAL
金額に使用する必要があります。 DECIMAL
値をドル/セント/ユーロなどに丸める必要がある場合、2番目の丸めを回避します。会計士はセントの端数が好きではありません。
MySQLの実装ではDECIMAL
、65桁の有効数字が許可されています。FLOAT
約7とDOUBLE
約16 を示します。通常、センサーと科学計算には7で十分です。
「パーセンテージ」については、TINYINT UNSIGNED
1バイトのストレージのみを消費し、あまり精度を必要としない場合に使用することがあります。時々使用しましたFLOAT
(4バイト)。特にパーセンテージ用に調整されたデータ型はありません。(また、それDECIMAL(2,0)
は値を保持できないため、100
技術的には必要になることに注意してくださいDECIMAL(3,0)
。)
またはFLOAT
、0と1の間の値を保持するを使用したこともありますが、「パーセンテージ」を表示する前に、必ず100を掛ける必要があります。
もっと
「パーセンテージ、平均、レート」の3つすべてがフロートのようなにおいがするので、それが私の最初の選択です。
データ型を決定するための1つの基準...値のコピーはいくつ存在しますか?
パーセンテージの列を含む10億行のテーブルがある場合、TINYINT
1バイト(合計1GB)がFLOAT
必要ですが、4バイト(合計4GB )になると考えてください。OTOH、ほとんどのアプリケーションにはそれほど多くの行がないため、これは関係がない場合があります。
「一般的な」ルールとして、「正確な」値には、INT
またはの形式を使用する必要がありますDECIMAL
。不正確なもの(科学計算、平方根、除算など)はFLOAT
(またはDOUBLE
)を使用する必要があります。
さらに、出力のフォーマットは通常、アプリケーションのフロントエンドに任されています。つまり、「平均」が「14.6666666 ...」と計算されても、表示は「14.7」のように表示されます。これは人間にとってよりフレンドリーです。その間、「15」または「14.667」が望ましい出力フォーマットであると後で決定するための基礎となる値があります。
範囲 "0.00-100.00"はFLOAT
、出力フォーマットを使用して、またはDECIMAL(5,2)
(3バイト)を使用して、常に指定された精度が必要であると事前に決定できます。