如何在mysql中更改浮点值的精度?

时间:2016-03-26 16:46:20

标签: mysql sql sql-update

我的数据库中的Hello我有一个带有数字的列,例如6.251543423我想让它们像6.25一样没有舍入它们。

我已经尝试了update examresults set point = substring(point,0,5),但它将所有值都返回为零

2 个答案:

答案 0 :(得分:2)

如果你不想圆,你必须截断:

TRUNCATE(6.251543423,2)

当您CASTDECIMAL(n,2)FLOAT(n,2)时,结果将被舍入。

答案 1 :(得分:1)

将浮点值转换为DECIMAL数据类型,小数点后面有适当的位数。在此示例中,小数点后的两位数。

SELECT CONVERT(float_col,DECIMAL(65,2)) AS dec_col 
  FROM ... 

浮点类型FLOAT和DOUBLE是近似十进制值。它们存储在标准IEEE浮点表示中。

如果转换为十进制,然后将其存储回浮点列,则会将其转换回浮点表示。

当您再次将值拉回时,您需要转换为DECIMAL。

如果要存储精确的十进制表示,则需要将值存储在定义为DECIMAL(或NUMERIC)数据类型的列中,而不是FLOAT或DOUBLE。

另外......

  

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示总共可以存储最多M位的值,其中D位可以在小数点之后。例如,

(摘自MySQL参考手册:https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html

(注意:我从未运用/测试DOUBLE(18,2)的行为。当我们需要精确的小数时,我们使用DECIMAL。当我们需要浮点数时,我们使用普通的旧DOUBLE。)