私はMySQLのDECIMALを理解できません。 00.0001から99.9999までの数字を含むことができるように行が必要です。どのように私はそれのように動作するように構造化するだろうか?MySQL DECIMALの使い方は?
答えて
DOUBLE列はDECIMAL列と同じないであり、あなたは財務データのためのDOUBLE列を使用する場合トラブルになります。
DOUBLEは実際にはFLOATの倍精度(32ビットではなく64ビット)のバージョンです。浮動小数点数はreal numbersの近似表現であり、正確ではありません。実際、0.01のような単純な数値は、FLOATまたはDOUBLE型の正確な表現を持っていません。
DECIMAL列は厳密な表現ですが、はるかに小さい範囲の可能な数値のためにもっと多くの領域を占めます。
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
あなたが尋ねたようにあなたは、次のステートメントが必要になり99.9999 0.0001からの値を保持することが可能な列を作成するには、列の定義はMが最大桁数である形式のDECIMAL(M、D)を以下の(精度)およびDは、小数点の右側の桁数です(スケール)。
これは、前のコマンドが-99.9999〜99.9999の値を受け入れる列を作成することを意味します。 UNSIGNED DECIMAL列は、0.0000〜99.9999の範囲で作成することもできます。
MySQL DECIMALの詳細については、official docsは常に素晴らしいリソースです。
この情報はすべて、MySQL 5.0.3以上のバージョンで当てはまります。以前のバージョンを使用している場合は、実際にアップグレードする必要があります。
あなたの答えに投票しました。あなたの答えは正しいです、他の答えではない(それは "二重=小数"と主張しているので)。 DECIMALは正確な値を持つ固定小数点型で、その同義語はNUMERIC、DEC、およびFIXEDです。 DOUBLEは、およその数値データ値を表す浮動小数点型であるため、DOUBLEではありません。 DECIMAL(<1-65>,<0-30>)を使用する場合、最初のパラメータは桁数で、2番目のパラメータは小数点以下の桁数です。 – Norbert
はい、あなたは正しいです。 http://dev.mysql.com/doc/refman/5.1/en/precision-math-examples.html – ajreal
@ajrealのMySQL 5.0.3以降での作業です。それに応じて回答を修正できますか?前もって感謝します。 – dezso
10進データ型のMySQL 5.x specificationは、DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
です。上記の答えは、符号なしの小数はできないと言っている間違いです。
符号なし小数点のみを許可するフィールドを定義するには、合計長は6桁で、そのうち4桁は小数です。DECIMAL (6,4) UNSIGNED
を使用します。
同様に、符号なし(つまり、負ではない)FLOATおよびDOUBLEデータ型を作成できます。
上記の回答は正しいようですが、どのように動作するかを簡単に説明するだけです。
列がDECIMAL(13,4)
に設定されているとします。これは、列の合計サイズが13桁で、4つが精度表現に使用されることを意味します。
ので、要約すると、その列のためにあなたは、の最大値を持っているでしょう:999999999,9999
あり、コメントで正しい解決策がありますが、一つの答えにそれらを要約する:
あなたが使用する必要がありますDECIMAL(6,4)。
次に、小数点(尺度)の前に2桁と4桁の合計6桁を持つことができます。少なくともthisによる。
これは、この概念を完全に理解するのに役立ちました。 –
- 1. PHPでのMySQL DECIMALの処理
- 2. 経度のMySQL精度DECIMAL(13,9)
- 3. この式のDecimalオブジェクトの正しい使い方
- 4. PDOを使用してmysqlにlong decimalを格納する
- 5. MySQL DECIMAL(3,2)末尾のゼロが表示されない
- 6. IQueryable <decimal> to decimal
- 7. はdecimalモジュールに
- 8. MySQLの私は、MySQLデータベースにいくつかのフィールドをインポートしようとしていますDECIMAL
- 9. Nullable <decimal>または 'decimal?'を使用せずに、C#でdecimalデータ型にNULL値を設定する方法はありますか?
- 10. mysqlのVarcharからDecimalへの科学記法のキャスト
- 11. MySQL Decimalデータ型をPHPでどのように使うべきですか?
- 12. MYSQL:カンマの後に10桁の精度を持つDECIMAL
- 13. Djangoのraw sql to django、DatetimeとDecimal MySqlの列
- 14. mysqlクライアントオプション:mysqlクライアントの-commentsの使い方
- 15. Decimalクラスのインスタンス化
- 16. Decimal()オブジェクトのPython deepcopy()
- 17. DECIMAL入力(php、mysql)で入力を更新
- 18. mysqlのwhereとjoinの使い方は?
- 19. Decimal in Python
- 20. Decimal to Int Converter
- 21. decimal input filter android
- 22. SQL Bigint * Decimal
- 23. Regex-grab decimal(12,2)
- 24. mysqlのコネクタの使い方
- 25. Decimalをintにキャストする方法
- 26. DOUBLE(15,2)からDECIMAL(15,2)への変換
- 27. SSH入力mysqlデータベースの使い方は?
- 28. Coalesce in MySQLの使い方
- 29. DECIMALへのDB2のキャスト
- 30. 主キーのBIGINTまたはDECIMAL(18,0)
*(参考)* http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html –
本当に正しい答えを受け入れるべきです。現在受け入れられている答えは間違っています。 – Olhovsky
ここで終わり、DECIMAL UNSIGNEDは不可能であると主張して答えを読んでください。このための正しい仕様については、下の新しい回答を参照してください。 –