我需要更改数据库中的几个字段:
: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?