我需要更改数据库中的几个字段:
:decimal, :precision => 8, :scale => 5
为:
:float
这种结合会导致数据丢失吗?当前数据由0到999之间的整数组成。
如果此迁移会影响已存储的这些数字,我该如何保证此数据安全?
设置:在Heroku上运行的Ruby on Rails 3(解决方案需要适用于PostgreSQL和MySQL)。
答案 0 :(得分:1)
如果您需要对您的数字进行精确比较或浮点算术,那么它将会发生。打开PostgreSQL并试试这个:
select floor(.8::float * 10.0::float); -- 8
select floor((.1::float + .7::float) * 10.0::float); -- 7
请参阅此相关问题,原因如下:
Why do simple doubles like 1.82 end up being 1.819999999645634565360?
答案 1 :(得分:0)
0到999之间的整数将适合任何一个,数据不会受到影响。如果它只是整数 - 为什么不使用int
s?