8

MySQLに、10進数、長さ9、符号なしのフィールドを持つテーブルがあります。価格に使っています。

データを挿入してクエリを実行すると、すべてが丸められ、小数点以下が削除されます。

理由がわかりません。

トラブルシューティングのヒント?


ホスト:web.com

phpMyAdminバージョン:2.11.10.1

MySQLクライアントバージョン:5.0.95

4

5 に答える 5

18

MySQLの10進型には、精度とスケールの2つの調整ノブがあります。スケールを省略したため、デフォルトで0になります。

ドキュメント(リンク

DECIMAL列の宣言構文はDECIMAL(M、D)です。MySQL5.1の引数の値の範囲は次のとおりです。

Mは最大桁数(精度)です。範囲は1〜65です。(古いバージョンのMySQLでは1〜254の範囲が許可されていました。)

Dは小数点(目盛り)の右側の桁数です。範囲は0〜30で、M以下である必要があります。

mysql> create table test01 (field01 decimal(9));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test01 (field01) values (123.456);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from test01;
+---------+
| field01 |
+---------+
|     123 |
+---------+
1 row in set (0.00 sec)

mysql> create table test02 (field01 decimal(9, 4));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into test02 (field01) values (123.456);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test02;
+----------+
| field01  |
+----------+
| 123.4560 |
+----------+
1 row in set (0.00 sec)
于 2012-09-26T04:32:48.763 に答える
1

私も同じ問題を抱えていました。入力した場合、PHPMyAdminは小数点以下の桁数を無視し、0と見なします。テーブルクエリの変更を使用して変更します。ALTER TABLE tablenameCHANGE rate rateDECIMAL(30,3)UNSIGNED NOT NULL;

于 2017-04-30T18:21:10.443 に答える
0

データ型をに設定している可能性があるため、丸めが行われますint

そのデータ型をdoubleORに変更しFloatます。

これはあなたを助けるでしょう。

編集

データ型がある場合は、decimalこの編集のようにサイズを指定します。

create table numbers (a decimal(10,2));
于 2012-09-26T04:22:14.490 に答える
0

型宣言で精度を宣言する必要があるため、丸めが行われています

create table test01 (field01 decimal(9,2));
于 2017-04-01T03:23:29.413 に答える
0

PHP / MySQLAdminで、テーブルの構造に移動し、変更を押してから、財務データ(ドル)の長さ(デフォルトは10.0)を10.2に設定します。

于 2018-08-30T14:49:47.700 に答える