Kaydet (Commit) 31d33698 authored tarafından Eike Rathke's avatar Eike Rathke

Resolves: tdf#122991 do not truncate time duration [] format values

Regression from

    commit e2e47898
    CommitDate: Fri Aug 31 12:50:52 2018 +0200

        Use tools::Time::GetClock() in number formatter for wall clock time

This partly reverts the change for the affected time duration []
formats, which truncated the value within the magnitude that due
to the imprecision of floating point values lead to "false"
precision of h:m:s.999999...

This might again yield imprecise display values (old behaviour)
for a difference of two wall clock times that now are not rounded
up into the next magnitude for display. If so, a
tools::Time::GetDuration() might be appropriate.

Change-Id: If8fbcc2e4c2e0da04ca742a2837f57cd313d0367
Reviewed-on: https://gerrit.libreoffice.org/67005Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
Tested-by: Jenkins
üst 4218caf1
......@@ -3058,14 +3058,7 @@ bool SvNumberformat::ImpGetTimeOutput(double fNumber,
}
else
{
double fTime = fNumber * 86400.0;
const double fOrigTime = fTime;
const double fFullSeconds = std::trunc(fTime);
fTime = rtl::math::round( fTime, int(nCntPost));
// Do not round up into the next magnitude, truncate instead.
if (fTime >= fFullSeconds + 1.0 || (fTime == 0.0 && fOrigTime != 0.0))
fTime = rtl::math::pow10Exp( std::trunc( rtl::math::pow10Exp( fOrigTime, nCntPost)), -nCntPost);
const double fTime = rtl::math::round( fNumber * 86400.0, int(nCntPost));
if (bSign && fTime == 0.0)
{
bSign = false; // Not -00:00:00
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment