小さな小数点以下の数値を大量に格納する必要があります(小数点の前に3桁、小数点以下6桁)。小さな小数の格納MySQL
私の仕様を理解するには、これには8バイトが必要です。私は整数を4バイトしか必要とせず、固定スケールファクタを使って検索した後に変換することができます。
intを使用する代わりに、より良い代替方法がありますか。数値に対して簡単に算術演算を行うことはできません。
ありがとうございました。
小さな小数点以下の数値を大量に格納する必要があります(小数点の前に3桁、小数点以下6桁)。小さな小数の格納MySQL
私の仕様を理解するには、これには8バイトが必要です。私は整数を4バイトしか必要とせず、固定スケールファクタを使って検索した後に変換することができます。
intを使用する代わりに、より良い代替方法がありますか。数値に対して簡単に算術演算を行うことはできません。
ありがとうございました。
「int
」というデータ型のMySQLを使用している場合は機能しません。これは、整数が小数精度を処理できないためです。
ご質問によれば、 "固定小数点データタイプ"を使用する必要があります。これは、大量の計算&通貨データに役立ちます。 MySQLでは、必要なデータ型は「DECIMAL
」で、詳細はhereで読むことができます。
適切な構文は "DECIMAL (9, 6)
"です。ここで9は、合計9桁の値を格納できることを意味します。そのうち6桁は小数点以下で、3桁は小数点より前です。
希望します。
プレーンなintで固定小数点演算を行うこともできます。 intを使って浮動小数点数をシミュレートする代わりに、範囲を失うだけでなく、さまざまな変換やレンジチェックを行う必要があります。これは好ましく、ちょうどそれが可能であることを言っているわけではありません。 –
@Marc - ありがとう、私にこれを知らせるため。 +1 :) –
私の全体的なポイントは、8バイトを使用するので、10進数を使用したくないということです。私がMarc Bが提案するように変換すると、データはintに簡単に収まります。私はある種の賢い選択肢があると思っていましたが、それに似ていません。私は小数点を使うことができ、記憶容量を2倍にする必要があるか、intを使うことができますが、すべての変換を行う必要があります。 –
これは正しいとは思わない。 DECIMAL(9,6)
は仕事をする必要があります。 mysql 5.1のマニュアルに従って、3桁の2バイトと6桁の3バイトが必要になります。 IMHOは合計で8バイトではない5バイトです。 したがって、あなたが提案した整数の「ハッキング」より多くのメモリを必要としません。あなたの場合、私は間違いなく10進数で行くでしょう。
何らかの理由でDECIMAL(3,6)が請求書に適合していませんか? – Jon
また、9桁の有効数字は0〜10^10-1の範囲ですが、4バイトの符号なし整数は0〜2^32-1 <10^10-1です。これらの数字を格納するには少なくとも34ビット必要です。 – Jon
@Jon: 'DECIMAL(9,6)'と書かれています。 – zerkms