将数据类型十进制更改为浮点数是否会导致数据丢失



我需要更改数据库中的几个字段:

:decimal, :precision => 8, :scale => 5

自:

:float

此迁移是否会导致数据丢失?当前数据由 0 到 999 之间的整数组成。

如果此迁移会影响已存储的这些数字,如何确保此数据的安全?

设置:Ruby on Rails 3 运行在 Heroku 上(解决方案需要同时适用于 PostgreSQL 和 MySQL)。

如果您需要对数字进行精确比较或浮点运算,它会的。打开PostgreSQL并尝试这个:

select floor(.8::float * 10.0::float); -- 8
select floor((.1::float + .7::float) * 10.0::float); -- 7

请参阅此相关问题以了解原因:

为什么像 1.82 这样的简单双精度最终会变成 1.8199999999645634565360?

介于 0 和 999 之间的整数适合其中任何一个,并且数据不会受到影响。 如果它只是整数 - 为什么不使用 int s?

相关内容

  • 没有找到相关文章

最新更新