Why can't I set precision and scale for float in rails migration?
运行此迁移后,我的地理纬度和地理经度列的类型为"float"(无精度和比例)。我可以直接运行SQL查询并将类型更改为float(10,6),那么为什么迁移会忽略我的精度和比例参数呢?
1 2 3 4
| def change
add_column :item_exifs , :geo_latitude , : float, precision: 10, scale: 6, null: false, default: 0
add_column :item_exifs , :geo_longitude , : float, precision: 10, scale: 6, null: false, default: 0
end |
- 为什么不使用小数?,stackoverflow.com/questions/8514167/…
- @冰融化是因为我不需要太精确的定位,而且浮法计算更快。我只是好奇这是迁移中的bug还是它的用意?
- 看到@rokibul hasan的答案,他对mysql和float有问题,把它改成decimal,也许你也可以。
- @冰激凌也许这是唯一的选择:)谢谢
- 好的,我把我的评论改成回答。
尝试将类型更改为十进制,
1 2 3 4
| def change
add_column :item_exifs , :geo_latitude , : decimal, precision: 10, scale: 6, null: false, default: 0
add_column :item_exifs , :geo_longitude , : decimal, precision: 10, scale: 6, null: false, default: 0
end |
一些活动记录版本根据所使用的数据库有几种奇怪的行为
活动记录中的浮点与小数
见@rokibul hasan和@ryan0答案