【问题标题】:How do I stop a MySQL decimal field from being rounded?如何阻止 MySQL 十进制字段被四舍五入?
【发布时间】:2018-08-30 22:49:47
【问题描述】:

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

插入数据,查询后,全部四舍五入,去掉小数。

我不知道为什么。

疑难解答提示?


主机:web.com

phpMyAdmin 版本:2.11.10.1

MySQL 客户端版本:5.0.95

【问题讨论】:

  • 你在数据库中为它提供了哪种数据类型?
  • 十进制字段的声明究竟是什么?声明的最大位数和小数位数是多少?

标签: php mysql sql


【解决方案1】:

MySQL 中的十进制类型有两个调整旋钮:精度和小数位数。你省略了比例,所以它默认为 0。

文档 (link)

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 中的表创建页面上的字段说长度/值时,我认为这是一种或另一种情况。我对 SQL 完全陌生,所以我不知道。谢谢。现在我只需要重新输入我所有的数据-.-
  • @Zuko:很高兴为您提供帮助。顺便说一句,您应该接受有用的答案。这将有助于未来的读者/访客并奖励回答者:)
【解决方案2】:

我遇到了同样的问题。如果您输入并假设它是 0,PHPMyAdmin 会忽略小数位。 使用alter table query 来改变它。 ALTER TABLE tablename CHANGE rate rate DECIMAL(30,3) UNSIGNED NOT NULL;

【讨论】:

    【解决方案3】:

    舍入完成是因为您可能已将其数据类型设置为int

    将其数据类型更改为doubleFloat

    这会对你有所帮助。

    编辑

    如果您的数据类型为 decimal,请像此编辑一样给出其大小。

    create table numbers (a decimal(10,2));
    

    【讨论】:

    • 该字段的数据类型是十进制。我想我没有说清楚。
    【解决方案4】:

    进行舍入是因为您需要在类型声明中声明精度

    create table test01 (field01 decimal(9,2));
    

    【讨论】:

      【解决方案5】:

      在 PHP/MySQLAdmin 中转到表的结构,点击更改,然后将财务数据(美元)的长度(默认为 10,0)设置为 10,2。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 2017-03-01
        • 2015-07-30
        • 2020-10-09
        • 1970-01-01
        • 2014-11-26
        相关资源
        最近更新 更多