diff options
author | Eike Rathke <erack@redhat.com> | 2019-01-28 13:31:40 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2019-01-28 20:02:23 +0100 |
commit | 31d3369803ce4eceab5ef708f2cd33748b6d10ea (patch) | |
tree | 33de13bd47a9606e5e138dc56487ce13d54323a8 | |
parent | 4218caf142a7ecac34548c6d38c6f6fbebb898b9 (diff) |
Resolves: tdf#122991 do not truncate time duration [] format values
Regression from
commit e2e47898180e547cad7ccde1e5890385d573e551
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/67005
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
-rw-r--r-- | svl/source/numbers/zformat.cxx | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx index 94a6ed27bb16..47f194285aa9 100644 --- a/svl/source/numbers/zformat.cxx +++ b/svl/source/numbers/zformat.cxx @@ -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 |