From 60d7644a46970e6eaee882e0c5d65692da206c24 Mon Sep 17 00:00:00 2001 From: Laurent Balland-Poirier Date: Sun, 12 Mar 2017 14:11:36 +0100 Subject: tdf#106253 Precision as shown for thousand dividor Info().nThousand contains number of thousands dividors after which digits are not displayed, i.e. 12345 is displayed as 12 with format 0, (in en_US) Change-Id: Ifa5540f2efd8ab006a07eade53f7aa0d31a19eac Reviewed-on: https://gerrit.libreoffice.org/35097 Tested-by: Jenkins Reviewed-by: Eike Rathke --- include/svl/zformat.hxx | 6 ++++++ sc/source/core/data/documen4.cxx | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx index 1dd05d2e9146..2f382d8702f5 100644 --- a/include/svl/zformat.hxx +++ b/include/svl/zformat.hxx @@ -226,6 +226,12 @@ public: sal_uInt16 GetFormatIntegerDigits( sal_uInt16 nIx = 0 ) const { return NumFor[nIx].Info().nCntPre; } + /** Count of hidden integer digits with thousands dividor: + * formats like "0," to show only thousands + */ + sal_uInt16 GetThousandDivisorPrecision( sal_uInt16 nIx = 0 ) const + { return NumFor[nIx].Info().nThousand * 3; } + //! Read/write access on a special sal_uInt16 component, may only be used on the //! standard format 0, 10000, ... and only by the number formatter! struct FormatterPrivateAccess { friend SvNumberFormatter; private: FormatterPrivateAccess() {} }; diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx index 6bb280b20d91..1cdc777fcd91 100644 --- a/sc/source/core/data/documen4.cxx +++ b/sc/source/core/data/documen4.cxx @@ -692,6 +692,12 @@ double ScDocument::RoundValueAsShown( double fVal, sal_uInt32 nFormat ) const { return pFormat->GetRoundFractionValue( fVal ); } + case css::util::NumberFormat::NUMBER: + case css::util::NumberFormat::CURRENCY: + { // tdf#106253 Thousands dividors for format "0," + nPrecision -= pFormat->GetThousandDivisorPrecision( nIdx ); + break; + } } } else -- cgit v1.2.3