[Libreoffice-commits] core.git: Branch 'libreoffice-6-2' - svl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jan 29 10:03:05 UTC 2019


 svl/source/numbers/zformat.cxx |    9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

New commits:
commit 10417db7f0b840d6494163876a73a0067b71f32e
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Mon Jan 28 13:31:40 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Tue Jan 29 11:02:43 2019 +0100

    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 at redhat.com>
    Tested-by: Jenkins
    (cherry picked from commit 31d3369803ce4eceab5ef708f2cd33748b6d10ea)
    Reviewed-on: https://gerrit.libreoffice.org/67030
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index d9b2afc23b6e..cce16ce94e97 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -3036,14 +3036,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


More information about the Libreoffice-commits mailing list