Resolves: tdf#126766 fix rounding correction at start of negative values

doubleToString() is entered with an inaccuracy afflicted
fValue=-9999.9999999999927 for which the rounding into the next
magnitude incremented the '-' character to '.' instead of
appending a '1' (and '0' and then "000") thus yielded ".0000"
instead of "-10000"

This seems to have been always the case.

Change-Id: I66170defa71fec40ca0b85f68affde8eff0d5ccb
Reviewed-on: https://gerrit.libreoffice.org/77208
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
diff --git a/sal/rtl/math.cxx b/sal/rtl/math.cxx
index 46b7ef8..d9ad08d 100644
--- a/sal/rtl/math.cxx
+++ b/sal/rtl/math.cxx
@@ -546,9 +546,13 @@ void doubleToString(typename T::String ** pResult,
                if (nDigit >= 10)
                {   // after-treatment of up-rounding to the next decade
                    sal_Int32 sLen = static_cast< long >(p-pBuf)-1;
                    if (sLen == -1)
                    if (sLen == -1 || (sLen == 0 && bSign))
                    {
                        // Assert that no one changed the logic we rely on.
                        assert(!bSign || *pBuf == static_cast< typename T::Char >('-'));
                        p = pBuf;
                        if (bSign)
                            ++p;
                        if (eFormat == rtl_math_StringFormat_F)
                        {
                            *p++ = static_cast< typename T::Char >('1');
@@ -568,6 +572,12 @@ void doubleToString(typename T::String ** pResult,
                        for (sal_Int32 j = sLen; j >= 0; j--)
                        {
                            typename T::Char cS = pBuf[j];
                            if (j == 0 && bSign)
                            {
                                // Do not touch leading minus sign put earlier.
                                assert(cS == static_cast< typename T::Char >('-'));
                                break;  // for, this is the last character backwards.
                            }
                            if (cS != cDecSeparator)
                            {
                                if (cS != static_cast< typename T::Char >('9'))
@@ -578,7 +588,7 @@ void doubleToString(typename T::String ** pResult,
                                else
                                {
                                    pBuf[j] = static_cast< typename T::Char >('0');
                                    if (j == 0)
                                    if (j == 0 || (j == 1 && bSign))
                                    {
                                        if (eFormat == rtl_math_StringFormat_F)
                                        {   // insert '1'