如何使用 ruby 将时间转换为 bigdecimal?

How to convert time to bigdecimal with ruby?

比如我有一个字符串格式的时间数据:

00:25:23;16

我想将其转换为 BigDecimal 并尝试过:

a = '00:25:23;16'.to_d
=> #<BigDecimal:96cb548,'0.0',9(18)>

当我检查一个:

a.floor
=> 0

看起来不是真实值。那么如何正确转换呢?

加法

我期望像这样的 bigdecimal 值(可能不是正确的值):

1543.123

假设 ;16 表示毫秒,那么也许您正在寻找这个?

> str = "00:25:23;16"
=> "00:25:23;16"
> h, m, s, ms = str.split(/[:;]/).map(&:to_f)
=> [0.0, 25.0, 23.0, 16.0]
> h * 3600 + m * 60 + s + ms/1000
=> 1523.016