首页 > 解决方案 > Ruby 转换为字符串时减去一微秒

问题描述

我有一个字符串时间戳:

ts = '1550989255.000300'

如何将tsaTimeDatetime对象解析为tt.strftime('%6N')正确打印?

我做了:

t = Time.at(ts.to_f)
t.strftime '%6N' #=> "000299"

Ruby 在将时间戳转换为字符串时会缩短一微秒。

标签: ruby

解决方案


您正在观察浮点数学不准确。如果你需要更高的精度,你应该使用BigDecimal.

require 'bigdecimal'

ts = BigDecimal('1550989255.000300')
t  = Time.at(ts)
t.strftime '%6N'

=> "000300"

推荐阅读