sc/qa/unit/data/xlsx/functions-excel-2010.xlsx |binary sc/source/core/tool/interpr2.cxx | 32 ++++--------------------- 2 files changed, 6 insertions(+), 26 deletions(-)
New commits: commit 0abe86ca86b91e83815b0d95e1d08bf7fbc697d2 Author: Eike Rathke <er...@redhat.com> Date: Mon Mar 10 20:49:38 2014 +0100 round to multiple of absolute significance, fdo#71720 follow-up The new functions FLOOR.PRECISE, CEILING.PRECISE and ISO.CEILING always round to a multiple of the absolute value of the significance given, returning the mathematical floor/ceiling in all cases. Also changed the test doc to use some meaningful values for these functions. Change-Id: Id5a26092838765143e2d308afa49e7119107dac5 diff --git a/sc/qa/unit/data/xlsx/functions-excel-2010.xlsx b/sc/qa/unit/data/xlsx/functions-excel-2010.xlsx old mode 100755 new mode 100644 index 48f5a7f..208c1c5 Binary files a/sc/qa/unit/data/xlsx/functions-excel-2010.xlsx and b/sc/qa/unit/data/xlsx/functions-excel-2010.xlsx differ diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index 885f00c..0c38865 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -638,27 +638,17 @@ void ScInterpreter::ScCeil_MS() if ( nParamCount == 1 ) { fVal = GetDouble(); - fDec = ( fVal < 0 ? -1 : 1 ); + fDec = 1.0; } else { - bool bArgumentMissing = IsMissing(); - fDec = GetDouble(); + fDec = fabs( GetDoubleWithDefault( 1.0 )); fVal = GetDouble(); - if ( bArgumentMissing ) - fDec = ( fVal < 0 ? -1 : 1 ); } if ( fDec == 0.0 || fVal == 0.0 ) PushInt( 0 ); else - { - if ( fVal * fDec > 0.0 ) - fDec *= -1.0; - if ( fVal < 0.0 ) - PushDouble(::rtl::math::approxFloor( fVal / fDec ) * fDec ); - else - PushDouble(::rtl::math::approxCeil( fVal / fDec ) * fDec ); - } + PushDouble(::rtl::math::approxCeil( fVal / fDec ) * fDec ); } } @@ -693,27 +683,17 @@ void ScInterpreter::ScFloor_MS() if ( nParamCount == 1 ) { fVal = GetDouble(); - fDec = ( fVal < 0 ? -1 : 1 ); + fDec = 1.0; } else { - bool bArgumentMissing = IsMissing(); - fDec = GetDouble(); + fDec = fabs( GetDoubleWithDefault( 1.0 )); fVal = GetDouble(); - if ( bArgumentMissing ) - fDec = ( fVal < 0 ? -1 : 1 ); } if ( fDec == 0.0 || fVal == 0.0 ) PushInt( 0 ); else - { - if ( fVal * fDec > 0.0 ) - fDec *= -1.0; - if ( fVal < 0.0 ) - PushDouble(::rtl::math::approxCeil( fVal / fDec ) * fDec ); - else - PushDouble(::rtl::math::approxFloor( fVal / fDec ) * fDec ); - } + PushDouble(::rtl::math::approxFloor( fVal / fDec ) * fDec ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits