4

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

UPDATE table SET field = 114.21 WHERE id = 1;

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

4

3 回答 3

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

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

    如果是DECIMAL(10, 2),则总共有 10 个数字,其中 2 个是十进制值(有 2 个十进制舍入意味着10.215保存为10.2210.214变为10.21)。

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

  3. 如果您使用FLOATDOUBLE PRECISION不必指定十进制值的个数,但它有其自身的缺陷。

于 2012-11-21T20:23:24.060 回答
0

正如 Mihai 提到的,您需要为小数类型定义正确的精度,例如 DECIMAL(10,2) 为两位小数。

当插入一个十进制值时,mySQL 将四舍五入。

从文档:

对于向 DECIMAL 或整数列中的插入,目标是精确数据类型,因此舍入使用“从零取整的一半”,而不管要插入的值是精确的还是近似的。

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

于 2014-01-18T00:23:47.730 回答
0

早在我还有一个关于在我的带小数点的数字上使用什么的问题之前。但是通过使用DOUBLE (10,2) 作为我的DATATYPE解决了问题,当你保存它时它会显示数据库上的确切数字。希望它会有所帮助。

于 2014-05-06T09:01:16.280 回答