【问题标题】:How to store decimal in MySQL?如何在 MySQL 中存储十进制?
【发布时间】:2013-05-13 20:16:19
【问题描述】:

我尝试将 DECIMAL 与 (2,2) 一起使用,但它不允许我使用它。

我只想存储一个数字,例如 7.50 或 10.50。我需要保留小数点后的两个数字,但是当我刷新数据库时,它会将值重置为 0.99。有什么建议吗?

【问题讨论】:

标签: mysql


【解决方案1】:

DECIMAL 声明的第一个参数是 total 位数。您可能想使用DECIMAL (4, 2)。这允许小数点前最多两位数和小数点后两位数。

文档:https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

【讨论】:

    【解决方案2】:

    语法是 DECIMAL(M,D)

    M - 总长度

    D - 小数点右边的数字

    http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html

    DECIMAL 列的声明语法是 DECIMAL(M,D)。这 MySQL 5.6 中参数的取值范围如下:

    M 是最大位数(精度)。它的范围为 1 到 65。(旧版本的 MySQL 允许的范围是 1 到 254。)

    D 是小数点右边的位数( 规模)。取值范围为 0 到 30,且不得大于 M。

    【讨论】:

      【解决方案3】:
      CREATE TABLE IF NOT EXISTS `table_name` (`id` int(11) NOT NULL AUTO_INCREMENT,`cost` DECIMAL( 10, 2 ) NOT NULL);
      

      这将使成本列总共保存10位数字,小数点前8位,小数点后2位。

      【讨论】:

        【解决方案4】:
        CREATE TABLE `salary` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `salary` DECIMAL(10,2) DEFAULT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
        

        DECIMAL(10,2) 表示salary 将保留总共 10 位数字,其中 2 位在小数点后。

        小数点前8位,小数点后2位。

        【讨论】:

          【解决方案5】:

          From mysql doc:

          DECIMAL 列的声明语法是 DECIMAL(M,D)。参数的取值范围如下:

          • M 是最大位数(精度)。它有一系列 1 到 65。
          • D 是小数点右侧的位数(刻度)。取值范围为 0 到 30,且不得大于 M。

          注意:- M 是总数。小数点前位数+总数小数点后的位数。

          在您的情况下,7.50 总共有 3 位数字,10.50 总共有 4 位数字。但宣布的最大数量。该列的位数为 2,因此它最多可以存储两位数的值。您甚至不能存储 1,因为它是 1.00,即总共 3 位数。因此,该列中允许的最大 2 位数值为 .99

          如果要存储 xx.xx,则必须声明 (4, 2),其中 4 是 M,2 是 D。

          如果您想以 mysql 的最大允许大小存储任何数字,则可以使用 (65, 30) 声明一个列。

          最大数量小数点前的位数 = M - D

          【讨论】:

            【解决方案6】:

            将字段从 INT 更改为 FLOAT

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-06-10
              • 2010-12-15
              • 2016-09-06
              • 2010-10-23
              • 1970-01-01
              • 2020-10-14
              • 2018-11-20
              • 2011-07-09
              相关资源
              最近更新 更多