How to convert `std.datetime.Duration` to seconds of floating point type?
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?
> import std.datetime;
> void main()
> import std.stdio;
> auto d = Data!"msecs"();
> struct Data(string units)
> real point = [1.0, 2.0, 3.0];
> real 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