【问题标题】:MySQL change value of decimal(19, 2) when insert into database插入数据库时​​ MySQL 更改十进制 (19, 2) 的值
【发布时间】:2020-04-03 07:58:13
【问题描述】:

我创建了如下表:

create table sample_tbl
(
    decimal_column decimal(19,2) null
);

现在,当我使用简单的插入命令插入此表时:

insert into sample_tbl values (18.939);

MySQL 将其存储为 18.94,我应该如何解决这个问题?我想存储真正的价值:18.93

【问题讨论】:

    标签: mysql decimal precision


    【解决方案1】:

    您插入的值已正确四舍五入为18.94
    你想要的是将值截断到小数点后 2 位,所以使用函数truncate()

    insert into sample_tbl values (truncate(18.939, 2));
    

    【讨论】:

      【解决方案2】:
      update sample_tbl set decimal_column =truncate(decimal_column,2)
      

      【讨论】:

        【解决方案3】:
        1. 如果是 DECIMAL(10, 2) 则总共有 10 个数字,其中 2 个是十进制值(2 个十进制舍入意味着 10.215 保存为 10.22,10.114 变为 10.11)。

        2. 如果是 DECIMAL(10),它将没有任何十进制值并被四舍五入为整数。

        3. 如果使用 FLOAT 或 DOUBLE PRECISION,则不必指定十进制值的数量,但它有其自身的缺陷。

        【讨论】:

        • 我认为第三项是非常糟糕的功能。
        • truncate 命令应该是解决您问题的好方法。
        猜你喜欢
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-04
        • 1970-01-01
        • 2022-11-25
        相关资源
        最近更新 更多