diff --git a/src/JsonSchema/Constraints/NumberConstraint.php b/src/JsonSchema/Constraints/NumberConstraint.php index aeea855d..c1b15f94 100644 --- a/src/JsonSchema/Constraints/NumberConstraint.php +++ b/src/JsonSchema/Constraints/NumberConstraint.php @@ -70,18 +70,13 @@ public function check(&$element, $schema = null, JsonPointer $path = null, $i = private function fmod($number1, $number2) { - $number1 = abs($number1); - $modulus = fmod($number1, $number2); - $precision = abs(0.0000000001); - $diff = (float) ($modulus - $number2); + $modulus = ($number1 - round($number1 / $number2) * $number2); + $precision = 0.0000000001; - if (-$precision < $diff && $diff < $precision) { + if (-$precision < $modulus && $modulus < $precision) { return 0.0; } - $decimals1 = mb_strpos($number1, '.') ? mb_strlen($number1) - mb_strpos($number1, '.') - 1 : 0; - $decimals2 = mb_strpos($number2, '.') ? mb_strlen($number2) - mb_strpos($number2, '.') - 1 : 0; - - return (float) round($modulus, max($decimals1, $decimals2)); + return $modulus; } }