【问题标题】:how can I stop mysql from rounding float values?如何阻止 mysql 舍入浮点值?
【发布时间】:2017-05-20 10:00:24
【问题描述】:

我将货币值作为浮点数存储在 mysql 表中。

问题是,mysql 正在向上或向下舍入数字。

例如。 12345.68 舍入为 12345.7

我怎样才能阻止这种情况,或者我应该使用更好的数据类型吗?

我想保留小数点后 2 位内的原始值。

【问题讨论】:

    标签: mysql floating-accuracy


    【解决方案1】:

    将适用列的定义从其当前设置更改为:

    FLOAT(9,2)
    

    前面sn-p 中的2 指示MySQL 将值保留至小数点后2 位。目前可能设置为1;因此观察到的行为。随意将9 更改为更适用的值。

    更多关于floats and precision

    Related answer, which advises on not using floats, but instead decimal.

    【讨论】:

    • @Ivan Georgiev 的回答应该是被接受的。
    【解决方案2】:

    不要使用FLOAT 类型。请改用DECIMAL。浮点数将十进制数转换为二进制数,这会导致舍入(精度损失)。 Decimal 将数字存储为小数 - 无需转换。

    在您的情况下,将列定义为 DECIMAL(12,2) 应该没问题。根据数字的预期大小选择宽度(第一个数字)。在示例中,预期大小为 12 位(包括小数点后的数字)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多