十进制数据类型将值四舍五入

时间:2012-11-21 20:20:56

标签: mysql decimal sqldatatypes

我已将MySQL字段表数据类型设置为decimal,因为根据我的阅读,我可以在decimal数据中以逗号/点存储价格类型字段...问题是每当我使用逗号或点存储任何数据时,MySQL会自动向上或向下舍入。例如。当我执行以下查询时:

UPDATE table SET field = 114.21 WHERE id = 1;

然后设置了字段,但是该值四舍五入为114,而不是显示我在查询中设置的数据(114.21) - 是否有任何解决方案?或者我应该使用其他数据类型?

3 个答案:

答案 0 :(得分:10)

  1. AFAIK点是十进制值的标准表示法。使用逗号可能会触发SQL解析错误,或者如果语法上下文允许使用逗号,则可能会被忽略。

  2. 您是如何定义DECIMAL列的精确度的?

    如果是DECIMAL(10, 2),则总共有10个数字,其中2个是十进制值(2位小数舍入意味着10.215保存为10.22和{{1} }变成10.214)。

    如果是10.21,它将没有任何小数值并且舍入为整数。

  3. 如果您使用DECIMAL(10)FLOAT,则不必指定小数值,但它有自己的缺陷。

答案 1 :(得分:0)

正如Mihai所说,你需要为小数类型定义适当的精度,例如: DECIMAL(10,2)表示两位小数。

当插入一个十进制值时,mySQL将会循环。

来自文档:

对于插入DECIMAL或整数列,目标是精确的数据类型,因此舍入使用“从零开始的一半”,无论要插入的值是精确的还是近似的。

有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/precision-math-rounding.html

答案 2 :(得分:0)

之前我还有一个关于如何使用小数点数的问题。但是使用 DOUBLE (10,2)作为我的 DATATYPE 解决了问题,并在保存时显示了数据库中的确切数字。希望它会有所帮助。