フローティングポイントを使用してジオロケーションを保存するモデルがあります。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のいずれかが残りを省略することを決定するのはこのためだと思います。
3桁の数字の後に数字を切り落とすことができる、または切り落とす必要があると判断するのは何ですか?これを制御するものはありますか?floatはこれを保存するための正しいタイプですか?
精度を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