8

我在 MySQL 中有一个表,其字段为十进制,长度为 9,无符号。我用它来计算价格。

在我插入数据并查询它之后,它已经全部四舍五入,小数点已被删除。

我很困惑为什么。

故障排除提示?


主机:web.com

phpMyAdmin 版本:2.11.10.1

MySQL客户端版本:5.0.95

4

5 回答 5

18

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)
于 2012-09-26T04:32:48.763 回答
1

我有同样的问题。事实证明,如果您输入 PHPMyAdmin 会忽略小数位并假定它为 0。使用 alter table query 更改它。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 回答