ruby - Ruby 转换为字符串时减去一微秒
问题描述
我有一个字符串时间戳:
ts = '1550989255.000300'
如何将ts
aTime
或Datetime
对象解析为t
并t.strftime('%6N')
正确打印?
我做了:
t = Time.at(ts.to_f)
t.strftime '%6N' #=> "000299"
Ruby 在将时间戳转换为字符串时会缩短一微秒。
解决方案
您正在观察浮点数学不准确。如果你需要更高的精度,你应该使用BigDecimal
.
require 'bigdecimal'
ts = BigDecimal('1550989255.000300')
t = Time.at(ts)
t.strftime '%6N'
=> "000300"
推荐阅读
- docker - 没有 nvidia-docker 有没有办法支持 GPU
- cassandra - 为什么“bash:cqlsh:找不到命令”
- html - reactjs为表格单元格着色
- r - 如何在 ifelse 语句中更新我的 sample()?
- javascript - 如何将工作 HTML、CSS、Javascript 代码从 Codepen 传输到 Visual Studio 代码和浏览器
- mysql - Sql 在简单查询上抛出错误
- c# - 当sql语句包含@时如何将Dapper与mysql一起使用
- html - 没有 javascript 的交互式页面加载
- cakephp - fontawesome-webfont.ttf:1 在 cakephp 2.10.12 中找不到
- excel - 将数字存储为文本时如何使用带有大于或等于运算符的 Excel SUMIFS