我有一个使用浮点存储地理位置的模型。它使用 ActiveRecord、Rails 3.2.x 将数据存储在 MySQL 中。
c = Camping.new()
c.latitude=51.77802459999999
c.save
c.latitude
=> 51.77802459999999
c.reload
c.latitude
=> 51.778
在查看数据库时,我确认它存储为 51.778。其他数字的存储精度更高,我的想法0
是 ActiveRecord 或 MySQL 决定忽略其余数字。
是什么决定了这个数字可以或应该在三位数之后被砍掉?有什么可以控制的吗?浮动是存储它的正确类型吗?
我想要一个 6 的精度,永远不会更高,但可以更少,或者填充。因此,当51.7780
提供时,它可能存储为51.7780
或51.778000
。当51.77802459999999
提供时,它可以存储为51.778025
或完全精度的数字;我真的不在乎。
相关部分来自schema.rb
:
create_table "campings", :force => true do |t|
#...
t.float "latitude"
t.float "longitude"
end