Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在插入数据库时更改十进制(19,2)的值_Mysql_Decimal_Precision - Fatal编程技术网

MySQL在插入数据库时更改十进制(19,2)的值

MySQL在插入数据库时更改十进制(19,2)的值,mysql,decimal,precision,Mysql,Decimal,Precision,我创建了一个表,如下所示: create table sample_tbl ( decimal_column decimal(19,2) null ); 现在,当我使用简单的insert命令插入此表时: insert into sample_tbl values (18.939); MySQL将其存储为18.94,如何解决此问题?我想存储实际值:18.93插入的值被正确舍入为18.94。 您需要将值截断为小数点后2位,因此请使用以下函数: 插入的值将正确舍入为18.94。 您需要将值

我创建了一个表,如下所示:

create table sample_tbl
(
    decimal_column decimal(19,2) null
);
现在,当我使用简单的insert命令插入此表时:

insert into sample_tbl values (18.939);

MySQL将其存储为18.94,如何解决此问题?我想存储实际值:18.93

插入的值被正确舍入为18.94。 您需要将值截断为小数点后2位,因此请使用以下函数:


插入的值将正确舍入为18.94。 您需要将值截断为小数点后2位,因此请使用以下函数:

如果是小数10,则总共有10个数字,其中2个是十进制值,2个十进制舍入,这意味着10.215保存为10.22,10.114变为10.11

如果它是小数10,它将没有任何十进制值,并四舍五入为整数

如果使用FLOAT或DOUBLE-PRECISION,则不必指定十进制值的数量,但它有自己的缺陷

如果是小数10,则总共有10个数字,其中2个是十进制值,2个十进制舍入,这意味着10.215保存为10.22,10.114变为10.11

如果它是小数10,它将没有任何十进制值,并四舍五入为整数

如果使用FLOAT或DOUBLE-PRECISION,则不必指定十进制值的数量,但它有自己的缺陷


我认为第三项是非常糟糕的功能。truncate命令应该是解决问题的好方法。我认为第三项是非常糟糕的功能。truncate命令应该是解决问题的好方法。
update sample_tbl set decimal_column =truncate(decimal_column,2)
insert into sample_tbl values (truncate(18.939, 2));