我有一个通过此迁移运行 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
作为金额
的数据。
当我使用 SQLite 作为数据库在控制台中访问 amount 时:
> NutrientAmount.find(1).amount
=> 0.8
当我使用MySQL作为数据库在控制台访问amount时:
> NutrientAmount.find(1).amount
=> 0.800000011920929
如果我在终端中打开 MySQL 并运行
mysql> SELECT amount FROM nutrient_amounts WHERE id = 1;
+--------+
| amount |
+--------+
| 0.8 |
+--------+
我在这里很困惑。这是预期的行为吗?使用 MySQL 时 Rails 不应该返回 0.8
吗?
最佳答案
好吧,我解决了这个问题 - 这取决于我在 database.yml
中使用的适配器。
我使用的是mysql
,所以我升级到了mysql2
。 0.8
现在已按预期返回。
关于mysql - 为什么 Rails 在使用不同的数据库时返回不同的浮点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604848/