4

私が読んだことから、データ型フィールドにコンマ/ドットを使用して価格を保存できるため、MySQLフィールドテーブルのデータ型をに設定しました...問題は、コンマまたはドット、MySQL は自動的に切り上げまたは切り下げを行っています。例えば。次のクエリを実行しているとき:decimaldecimal

UPDATE table SET field = 114.21 WHERE id = 1;

次に、フィールドが設定されますが、クエリで設定したデータを表示する代わりに、値が 114 に丸められます ( 114.21) - そのための解決策はありますか? または、他のデータ型を使用する必要がありますか?

4

3 に答える 3

14
  1. 私の知る限り、ドットは10進数値の標準表記です。コンマを使用すると、SQL 解析エラーが発生したり、構文上のコンテキストでコンマの使用が許可されている場合に気付かれなかったりする可能性があります。

  2. DECIMAL列の精度をどのように定義しましたか?

    その場合DECIMAL(10, 2)、合計 10 個の数字があり、そのうち 2 個は 10 進数値です (2 個の小数丸め10.215は、 として保存され10.22、 に10.214なります10.21)。

    その場合DECIMAL(10)、小数値はなく、整数に丸められます。

  3. 使用する場合、FLOATまたはDOUBLE PRECISION小数値の数を指定する必要はありませんが、独自の欠陥があります。

于 2012-11-21T20:23:24.060 に答える
0

小数点のある数値で何を使用するかについても問題が発生する前に。しかし、 DOUBLE (10,2) を DATATYPE として使用することで問題は解決し、保存するとデータベース上の正確な数が表示されます。それが役立つことを願っています。

于 2014-05-06T09:01:16.280 に答える
0

Mihai が述べたように、小数点以下 2 桁の DECIMAL(10,2) など、10 進数の型に適切な精度を定義する必要があります。

10 進値を挿入すると、mySQL は丸められます。

ドキュメントから:

DECIMAL 列または整数列への挿入の場合、ターゲットは正確なデータ型であるため、挿入される値が正確か近似かどうかに関係なく、丸めは「0 から半分離れて丸め」を使用します。

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/precision-math-rounding.htmlを参照してください。

于 2014-01-18T00:23:47.730 に答える