为什么Rails在使用不同的数据库时返回不同的浮点值?

时间:2017-10-06 11:36:34

标签: mysql ruby-on-rails sqlite ruby-on-rails-4

我有一个使用此迁移运行Rails 4.2的应用

create_table "nutrient_amounts", force: :cascade do |t|
  t.integer "nutrient_id", limit: 4
  t.integer "food_id",     limit: 4
  t.float   "amount",      limit: 24
end

使用SQLite和MySQL运行此迁移后,我已将0.8的一行数据作为amount添加到两者中。

当我使用SQLite作为数据库访问控制台中的金额时:

 >  NutrientAmount.find(1).amount
 => 0.8

当我使用MySQL作为数据库访问控制台中的金额时:

>  NutrientAmount.find(1).amount
=> 0.800000011920929

如果我在终端中打开MySQL并运行

mysql> SELECT amount FROM nutrient_amounts WHERE id = 1;
+--------+
| amount |
+--------+
|    0.8 |
+--------+

我在这里很困惑。这是预期的行为吗?使用MySQL时,Rails不应该返回0.8吗?

1 个答案:

答案 0 :(得分:0)

好吧,我解决了这个问题 - 这是我在database.yml内使用的适配器。

我使用的是mysql,所以我升级到了mysql2。现在按预期返回0.8