From: shyouhei@... Date: 2020-06-18T11:24:36+00:00 Subject: [ruby-core:98867] [Ruby master Feature#16470] Issue with nanoseconds in Time#inspect Issue #16470 has been updated by shyouhei (Shyouhei Urabe). Note that the cryptic output does not happen for `Time.now.utc`. ```ruby Time.now.utc.inspect # => "2020-06-18 11:12:44.354669166 UTC" ``` Nor when you pass `123456.789r` for `Time.utc`. ```ruby Time.utc(2007, 11, 1, 15, 25, 0, 123456.789r) # => "2007-11-01 15:25:00.123456789 UTC" ``` So yes, as @eregon pointed out, this is not an issue of `Time#inspect`. This is due to the OP is using `123456.789` for some reason not shown in the report. `Time#inspect` is just trying to express as much as it can. Is this usage (passing Float instances instead of Rationals) major in some area? If so we might want to improve `Time.utc`'s API, not `Time#inspect`. ---------------------------------------- Feature #16470: Issue with nanoseconds in Time#inspect https://bugs.ruby-lang.org/issues/16470#change-86232 * Author: andrykonchin (Andrew Konchin) * Status: Open * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- Ruby 2.7 added nanosecond representation to the return value of `Time#inspect` method. Nanosecond is displayed as `Rational` as in the following example: ```ruby t = Time.utc(2007, 11, 1, 15, 25, 0, 123456.789) t.inspect # => "2007-11-01 15:25:00 8483885939586761/68719476736000000 UTC" ``` The nanosecond value `8483885939586761/68719476736000000` can be expanded to `0.12345678900000001`. This is different from the stored nanosecond: ```ruby t.nsec # => 123456789 t.strftime("%N") # => "123456789" ``` I assume it isn't expected, and will be fixed. -- https://bugs.ruby-lang.org/ Unsubscribe: