MySQL 插入数据库时更改 decimal(19, 2) 的值
MySQL change value of decimal(19, 2) when insert into database
我创建了 table,如下所示:
create table sample_tbl
(
decimal_column decimal(19,2) null
);
现在,当我使用简单的插入命令插入此 table 时:
insert into sample_tbl values (18.939);
MySQL 存储为 18.94,我该如何解决这个问题?我想存储实际值:18.93
update sample_tbl set decimal_column =truncate(decimal_column,2)
您插入的值已正确舍入为 18.94
。
你想要的是将值截断到小数点后两位,所以使用函数 truncate()
:
insert into sample_tbl values (truncate(18.939, 2));
如果是DECIMAL(10, 2)则一共有10个数,其中2个是十进制值(2个小数四舍五入意味着10.215保存为10.22,10.114变成10.11) .
如果它是 DECIMAL(10),它将没有任何小数值并四舍五入为整数。
如果您使用 FLOAT 或 DOUBLE PRECISION,则不必指定小数位数,但它有其自身的缺陷。
我创建了 table,如下所示:
create table sample_tbl
(
decimal_column decimal(19,2) null
);
现在,当我使用简单的插入命令插入此 table 时:
insert into sample_tbl values (18.939);
MySQL 存储为 18.94,我该如何解决这个问题?我想存储实际值:18.93
update sample_tbl set decimal_column =truncate(decimal_column,2)
您插入的值已正确舍入为 18.94
。
你想要的是将值截断到小数点后两位,所以使用函数 truncate()
:
insert into sample_tbl values (truncate(18.939, 2));
如果是DECIMAL(10, 2)则一共有10个数,其中2个是十进制值(2个小数四舍五入意味着10.215保存为10.22,10.114变成10.11) .
如果它是 DECIMAL(10),它将没有任何小数值并四舍五入为整数。
如果您使用 FLOAT 或 DOUBLE PRECISION,则不必指定小数位数,但它有其自身的缺陷。