Andrew Schwartzmeyer created MESOS-8421:
-------------------------------------------

             Summary: Duration operators drop precision, even when used with 
integers
                 Key: MESOS-8421
                 URL: https://issues.apache.org/jira/browse/MESOS-8421
             Project: Mesos
          Issue Type: Improvement
          Components: stout
            Reporter: Andrew Schwartzmeyer
            Priority: Minor


The implementation of {{Duration operator*=()}} is as follows:

{noformat}
  Duration& operator*=(double multiplier)
  {
    nanos = static_cast<int64_t>(nanos * multiplier);
    return *this;
  }
{noformat}

A similar pattern is implemented for all the operators. This means that, even 
when multiplying by {{int64_t}} (underlying type of {{nanos}}), we lose 
precision.

While [Review #64729|https://reviews.apache.org/r/64729/] removes the 
conversion warnings from {{int}} and {{size_t}} to {{double}}, it purposefully 
does not address fixing the precision of these operators (as that'll be a 
change in behavior, albeit slight, and should be done for the whole class at 
once).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to