【发布时间】: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
【问题讨论】:
我创建了如下表:
create table sample_tbl
(
decimal_column decimal(19,2) null
);
现在,当我使用简单的插入命令插入此表时:
insert into sample_tbl values (18.939);
MySQL 将其存储为 18.94,我应该如何解决这个问题?我想存储真正的价值:18.93
【问题讨论】:
您插入的值已正确四舍五入为18.94。
你想要的是将值截断到小数点后 2 位,所以使用函数truncate():
insert into sample_tbl values (truncate(18.939, 2));
【讨论】:
update sample_tbl set decimal_column =truncate(decimal_column,2)
【讨论】:
如果是 DECIMAL(10, 2) 则总共有 10 个数字,其中 2 个是十进制值(2 个十进制舍入意味着 10.215 保存为 10.22,10.114 变为 10.11)。
如果是 DECIMAL(10),它将没有任何十进制值并被四舍五入为整数。
如果使用 FLOAT 或 DOUBLE PRECISION,则不必指定十进制值的数量,但它有其自身的缺陷。
【讨论】: