diff --git a/lib/evalmath/evalmath.class.php b/lib/evalmath/evalmath.class.php index aa5539fe186d7..9d9c7d6250bd3 100644 --- a/lib/evalmath/evalmath.class.php +++ b/lib/evalmath/evalmath.class.php @@ -107,7 +107,7 @@ class EvalMath { 'sin','sinh','arcsin','asin','arcsinh','asinh', 'cos','cosh','arccos','acos','arccosh','acosh', 'tan','tanh','arctan','atan','arctanh','atanh', - 'sqrt','abs','ln','log','exp','floor','ceil','round'); + 'sqrt','abs','ln','log','exp','floor','ceil'); var $fc = array( // calc functions emulation 'average'=>array(-1), 'max'=>array(-1), 'min'=>array(-1), diff --git a/lib/simpletest/testmathslib.php b/lib/simpletest/testmathslib.php index f1cfb5664de40..2b53a9fad4c35 100644 --- a/lib/simpletest/testmathslib.php +++ b/lib/simpletest/testmathslib.php @@ -149,6 +149,10 @@ public function test__error_handling() { } public function test_rounding_function() { + + // Rounding to the default number of decimal places + // The default == 0 + $formula = new calc_formula('=round(2.5)'); $this->assertEqual($formula->evaluate(), 3); @@ -203,6 +207,20 @@ public function test_rounding_function() { $formula = new calc_formula('=floor(-2.5)'); $this->assertEqual($formula->evaluate(), -3); + // Rounding to an explicit number of decimal places + + $formula = new calc_formula('=round(2.5, 1)'); + $this->assertEqual($formula->evaluate(), 2.5); + + $formula = new calc_formula('=round(2.5, 0)'); + $this->assertEqual($formula->evaluate(), 3); + + $formula = new calc_formula('=round(1.2345, 2)'); + $this->assertEqual($formula->evaluate(), 1.23); + + $formula = new calc_formula('=round(123.456, -1)'); + $this->assertEqual($formula->evaluate(), 120); + } public function test_scientific_notation() {