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

标签 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 作为金额的数据。

当我使用 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,所以我升级到了mysql20.8 现在已按预期返回。

关于mysql - 为什么 Rails 在使用不同的数据库时返回不同的浮点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604848/

相关文章:

mysql - 随机时间跨度后,AWS RDS MySQL性能下降

ruby-on-rails - 将西类牙语 feed 翻译成英语,然后存储到 MYSQL 数据库中

ios - Sqlite.swift 过滤/查找

mysql - 搜索并删除 mySQL 表中的孤立项

mysql - 没有 UNION ALL 的结果集中的值列表

ruby-on-rails - 直接访问页面时忽略上一个 URL 的 URI(request.referer).path

android - 如何从sqlite数据库读取然后显示它然后在android中删除它?

android - 更新数据库中的数据时出现 NullPointerException

php - 尝试将具有相似列字段的多个数据数组上传到一个mysql表

ruby-on-rails - HTML5 视频在我的 rails 3 应用程序中不起作用