tdf#123591: truncate and round to 'scale' number of decimal places

otherwise the number will be incorrectly converted to OUString
if scale < number of decimals

See https://bugs.documentfoundation.org/show_bug.cgi?id=123591#c25

Change-Id: Ie32c9c6ab339d6907e9a4e2645d6f19bad9e67c8
Reviewed-on: https://gerrit.libreoffice.org/75727
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 69ce91f..71a4345 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -18,6 +18,7 @@
 */

#include <sal/config.h>
#include <cmath>

#include <string_view>

@@ -729,7 +730,8 @@ void SAL_CALL OPreparedStatement::setObjectWithInfo( sal_Int32 parameterIndex, c
        OUString sValue;
        if( x >>= dbValue )
        {
            sValue = OUString::number( dbValue );
            // truncate and round to 'scale' number of decimal places
            sValue = OUString::number( std::floor((dbValue * pow10Integer(scale)) + .5) / pow10Integer(scale) );
        }
        else
        {