从 float 转换的 Ruby Time 对象不等于原始 Time 对象

2024-06-19

time = Time.now
fvalue = time.to_f
return time == Time.at(fvalue)

有人可以解释为什么上面的表达式返回 false 吗?如何从 float 创建一个与原始时间变量匹配的新 Time 对象?

Thanks


IEEE 754 双 https://en.wikipedia.org/wiki/Double_precision#IEEE_754_double-precision_binary_floating-point_format:_binary64(由返回to_f) 不足以准确地表示exact time.

t1 = Time.now
f1 = t1.to_f
t2 = Time.at(f1)

# they look the same
t1.inspect #=> '2013-09-09 23:46:08 +0200'
t2.inspect #=> '2013-09-09 23:46:08 +0200'

# but double does not have enough precision to be accurate to the nanosecond
t1.nsec #=> 827938306
t2.nsec #=> 827938318
#                  ^^

# so they are different
t1 == t2 #=> false

执行以下操作以保留准确的时间:

t1 = Time.now
r1 = t1.to_r # value of time as a rational number
t2 = Time.at(r1)
t1 == t2 #=> true

引文来自Time.to_r http://www.ruby-doc.org/core-2.0/Time.html#method-i-to_r:

此方法旨在用于获取准确的值 代表自纪元以来的纳秒。你可以使用这个方法 将时间转换为另一个纪元。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 float 转换的 Ruby Time 对象不等于原始 Time 对象 的相关文章

  • 如何使用 jira-ruby gem 更改 ruby​​ 中问题的转换?

    我正在尝试使用 Jira ruby gem 访问 ruby 中的 jira https rubygems org gems jira ruby https rubygems org gems jira ruby 但我找不到如何更改转换 我只
  • 从delayed_job工作线程中排除队列

    在delayed jobs 中 可以为特定队列运行工作线程 我似乎找不到任何有关如何运行工作人员并排除特定队列的示例 文档 我试图让 1 名工作人员处理超高优先级的事情 1 名工作人员处理其余的事情 通过指定哪些队列与哪些工作人员相关来实现
  • Swift 中如何判断字母是字母数字还是数字

    我想计算以下字符串中字母 数字和特殊字符的数量 let phrase The final score was 32 31 I tried for tempChar in phrase if tempChar gt a tempChar lt
  • 在 Rails 控制器中存储对象的最佳方式(会话除外)?

    我有一个 Rails 控制器 class Controllername lt application def method1 obj API CALL session obj access token redirect to redirec
  • 如何使用 Logger.new 创建文件夹(如果不存在)?

    我正在尝试注册一个新日志 my logger Logger new Rails root log my log 但是当我尝试生成新文件夹时 将其放入其中 my logger Logger new Rails root log today t
  • 如何在rails中使用like子句查询?

    我想在搜索关键字时获得 json 格式的数据 所以我使用 LIKE 子句并像这样查询 select from employees where fname like or mname like or lname like or usernam
  • PHP 中时间的乘法

    我需要在 PHP 中乘以时间 maritime 01 10 00 我需要增加这个 maritime到 5我想得到这样的答案 01 10 00 5 05 50 00 这是你应该做的 Step 1 将您的小时数转换为秒数 seconds str
  • Ruby on Rails - 无法加载此类文件 - net/ssh

    我已经为此苦苦挣扎了几天了 当我尝试从视图调用助手中的方法来执行 ssh 时 它会抛出该错误 加载以下文件时发生此错误 net ssh 但是当我将代码复制到test rb文件并从提示符处执行ruby test rb它连接完美 可能是什么问题
  • 多个变量之间的平等比较

    我遇到一种情况 我需要检查多个变量是否具有相同的数据 例如 var x 1 var y 1 var z 1 我想检查 x 1 和 y 1 z 1 是否 可能是 1 或其他值 除了这个之外 有没有什么捷径可以实现类似的效果 如下所示 if x
  • 使用 Ruby SDK 将文件上传到 Amazon S3

    我正在尝试上传文件 一个简单的 hello txt 我正在关注文档 但无法将其上传到我的存储桶 START AWS CLIENT s3 Aws S3 Resource new bucket s3 bucket BUCKET NAME beg
  • 无主键的 ActiveRecord 模型

    我有一个 ActiveRecord 模型GPA没有主键 class GPA lt ActiveRecord Base end 当我尝试打电话时GPA first to json I get TypeError false is not a
  • ruby Sequel gem - 如何使用 pg_array 扩展查询数组

    我正在使用pg array http sequel jeremyevans net rdoc plugins files lib sequel extensions pg array rb html扩展和续集版本 4 1 1 我添加了这样的
  • Ruby 中的数组切片:不合逻辑行为的解释(取自 Rubykoans.com)

    我正在做练习鲁比 科恩斯 http rubykoans com 我对以下 Ruby 怪癖感到震惊 我发现它确实无法解释 array peanut butter and jelly array 0 gt peanut OK array 0 1
  • 如何在 Ruby 中处理大文件?

    我对编程还很陌生 所以要温柔 我正在尝试从图书馆数据库 dat 文件中提取 IBSN 编号 我已经编写了有效的代码 但它只搜索了 180MB 文件的大约一半 如何调整它以搜索整个文件 或者我如何编写一个程序将 dat 文件分割成可管理的块
  • RVM 安装问题 - 无法执行端口 (autoconf)

    我正在尝试在 OSX mountain lion 上安装 Jekyll 首先我想安装RVM 然后安装最新的ruby 但是 RVM 安装失败 我无法解决问题 任何帮助表示赞赏 这是我所做的 安装的 OSX 命令行工具 尝试安装 RVM cur
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • 安装 mysql2 时出错:无法构建 gem 本机扩展

    我在尝试安装时遇到一些问题mysql2Rails 的宝石 当我尝试通过运行安装它时bundle install or gem install mysql2它给了我以下错误 安装 mysql2 时出错 错误 无法构建 gem 本机扩展 我该如
  • Rails 路由:向 root 添加(浅层)关注

    在我的routes rb中 我定义了一个问题 如下所示 concern namespaceable do resources comments do resources replies 现在 我可以将此问题添加到任何资源中 resource
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • ruby require 问题(与 $LOAD_PATH 有关)

    我正在尝试使用我刚刚安装的 gem 通过sudo gem install excelsior 像这样 需要 红宝石 要求 精益求精 这在 irb 中工作得很好 但是当我将完全相同的代码粘贴到 rb 文件中并尝试使用 ruby 运行它时 我得

随机推荐