我在 MySQL 中有一个表,其字段为十进制,长度为 9,无符号。我用它来计算价格。
在我插入数据并查询它之后,它已经全部四舍五入,小数点已被删除。
我很困惑为什么。
故障排除提示?
主机:web.com
phpMyAdmin 版本:2.11.10.1
MySQL客户端版本:5.0.95
MySQL 中的小数类型有两个调整旋钮:精度和小数位数。您省略了比例,因此默认为 0。
DECIMAL 列的声明语法是 DECIMAL(M,D)。MySQL 5.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)
我有同样的问题。事实证明,如果您输入 PHPMyAdmin 会忽略小数位并假定它为 0。使用 alter table query 更改它。ALTER TABLE tablename
CHANGE rate
rate
DECIMAL(30,3) UNSIGNED NOT NULL;
舍入完成是因为您可能已将其数据类型设置为int
.
将其数据类型更改为double
OR Float
。
这将帮助你。
编辑
如果您有数据类型,请decimal
像此编辑一样给出它的大小。
create table numbers (a decimal(10,2));
发生舍入是因为您需要在类型声明中声明精度
create table test01 (field01 decimal(9,2));
在 PHP/MySQLAdmin 中,转到表结构,点击更改,然后将财务数据(美元)的长度(默认为 10,0)设置为 10,2。