【问题标题】:MySQL rounding off float value internally to one decimal placeMySQL内部将浮点值四舍五入到小数点后一位
【发布时间】:2020-05-12 17:31:50
【问题描述】:

我有一个 mysql 数据库,其中表 X 具有浮点无符号列数。

当数值小于10000时,数值正确保存到小数点后两位。

但对于更多数据,它会将小数点后两位四舍五入到一位。

我不确定是否 >10000 是导致此问题的原因,但这是主要嫌疑人。

该值正在映射到应用程序实体中的浮点数。

我不知道为什么某些金额值会四舍五入。

有人遇到过类似的问题吗?

【问题讨论】:

  • 如果您想要使用小数的精确值,这就是 float 看到的 dev.mysql.com/doc/refman/8.0/en/floating-point-types.html
  • 是的,这就是 FLOAT 的定义。也许你想要 DECIMAL。
  • 是的,当它超过六位时,它不会保持超过 6 位的数字,而是将其设为 0 或截断它以防其十进制值。为什么特别是它只允许 6 位是什么我们不确定。理想情况下,我们会从 float 获取小数,但模式仍然不清楚。

标签: mysql decimal


【解决方案1】:

MySQL 在存储值时根据 Float 列的长度进行舍入。快速解决方法是在 MySql 表中设置 Float 列的长度,例如浮点数(11,2)

可以在此处找到 MySQL 参考:Floating-Point Types (Approximate Value)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多