當我想測驗作業是否在正確的時間排隊時,我正在使用 rSpec 進行一些測驗。為此,我將任務排入佇列2.hours.from_now,然后使用.at(2.hours.from_now). 我很快意識到我的錯誤并將其更改為固定測驗的變數,但我意識到測驗檢查了at xxxx-xx-xx xx:xx:xx 721891/1048576 xxxx. 現在我想知道究竟是721891/1048576什么。我發現這1048576 byte是一個Mebibyte。最后的分數是否有可能只是瞬間的進一步精度,但由于精度為,而不是x/1048576顯示出來?附加資訊:使用的資料庫是 psql10485762^20
uj5u.com熱心網友回復:
Time#inspect如果亞秒的小數(小數)部分長于 9 位,這似乎是可行的方法:
Time.new(2022, 1, 1, 0, 0, 1/1_000_000_000r, 'UTC')
#=> 2022-01-01 00:00:00.000000001 UTC
Time.new(2022, 1, 1, 0, 0, 1/10_000_000_000r, 'UTC')
#=> 2022-01-01 00:00:00 1/10000000000 UTC
或者如果它沒有(有限)十進制表示:
Time.new(2022, 1, 1, 0, 0, 2/3r, 'UTC')
#=> 2022-01-01 00:00:00 2/3 UTC
現在我想知道 721891/1048576 究竟做了什么。
你721891/1048576相當于?0.688秒,它沒有任何其他特殊含義。
有理數可能是將時間的浮點表示傳遞回的結果Time.at:
t = Time.at(1640995200, 688449)
#=> 2022-01-01 01:00:00.688449 0100
t.to_f
#=> 1640995200.688449
Time.at(1640995200.688449)
#=> 2022-01-01 01:00:00 721891/1048576 0100
這是在 Ruby 中處理亞秒級時的常見錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507444.html
