0

在我的 Rails 3.2 应用程序中保存我的经度和纬度时,该值在保存时被截断。

我在控制台中尝试过,它保存了全部价值:

 item.update_attributes(:latitude => '51.07763839854951')

 item.latitude:

 => 51.07763839854951

在浏览器中保存相同的值会给我一个输出:

 51.0865174

我能做些什么来防止这种情况发生?

4

1 回答 1

1

该值存储在数据库中时可能会被截断。不管确切的原因是什么,如果这个值是精确的并且需要无损地存储和检索,那么浮点数可能是错误的数据类型。当您对浮点数执行某些算术运算时,它们可能会失去精度,因此它们不适用于必须精确的值。

当您使用 Rails 迁移定义数据库模式时,您可以将:decimal类型用于必须精确存储的十进制值。(当 ActiveRecord 将这些值从 DB 中拉出时,它们将成为BigDecimal对象而不是Floats 您可以在BigDecimals 上进行算术运算而不会丢失精度。)

于 2012-08-05T15:13:50.850 回答