How to convert `std.datetime.Duration` to seconds of floating point type?

drug drug2004 at bk.ru
Tue Feb 19 18:31:42 UTC 2019

```19.02.2019 19:55, Alex пишет:
> On Tuesday, 19 February 2019 at 16:44:23 UTC, drug wrote:
>> On 19.02.2019 19:35, Alex wrote:
>>> On Tuesday, 19 February 2019 at 16:26:33 UTC, drug wrote:
>>>>
>>>> Well, I understand that using floating point values to represent
>>>> time internally is a bad idea and I totally agree. But some
>>>> convenient API to convert Duration to floating point and vice versa
>>>> would be useful because in mechanics for example you often need to
>>>> express time in seconds with fractional part. In this regard
>>>> std::chrono is more expressive (the only one though, in general
>>>> std.datetime is much more powerful than std::chrono).
>>>
>>> If you need a real (double, float) parameter, just use it. Transport
>>> the units separately...
>> Could you elaborate what you mean?
>> ```
>>     auto point = vec3(1.0, 2.0, 3.0);
>>     vec3 velocity = ...;
>>
>>     auto t = dur!"msecs"(500);
>>
>>     ...
>>
>>     auto new_point = point + velocity * t.total!"msecs"/1e3;
>> ```
>> How can I use a real parameter and transport units separately here?
>
> like
> ´´´
> import std.datetime;
>
> void main()
> {
>      import std.stdio;
>      auto d = Data!"msecs"();
>      writeln(d.point);
>      writeln(d.t);
> }
>
> struct Data(string units)
> {
>      real[3] point = [1.0, 2.0, 3.0];
>      real[3] velocity = ...;
>      auto t = dur!units(500);
> }
> ´´´

Well, your code is more heavy and less flexible than just using
`total!"msecs"/1e3`. Sorry, but it's loosely coupled with my question.
```

More information about the Digitalmars-d-learn mailing list