在我的Rails 3.2应用程序中保存我的经度和纬度时,该值会在保存时被截断。
我已经在控制台中试过并且它保存了全部值:
item.update_attributes(:latitude => '51.07763839854951')
item.latitude:
=> 51.07763839854951
在浏览器中保存相同的值会产生以下输出:
51.0865174
我该怎么做才能防止这种情况发生?
答案 0 :(得分:1)
当值存储在数据库中时,该值可能会被截断。无论确切原因如何,如果此值是精确的并且需要无损地存储和检索,则浮点数可能是要使用的错误数据类型。当您对它们执行某些算术运算时,浮点数可能会失去精度,因此它们不适用于必须精确的值。
使用Rails迁移定义数据库模式时,可以将:decimal
类型用于必须精确存储的十进制值。 (当ActiveRecord将这些值从数据库中提取出来时,它们将变为BigDecimal
个对象而不是Float
s您可以在BigDecimal
上进行算术而不会丢失精度。)