]> granicus.if.org Git - php/commitdiff
MFH: Avoid a round() bug that occurs due to over optimization of C code by
authorIlia Alshanetsky <iliaa@php.net>
Fri, 8 Aug 2003 23:42:10 +0000 (23:42 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Fri, 8 Aug 2003 23:42:10 +0000 (23:42 +0000)
gcc.

ext/standard/math.c

index 137b228d9648773aa7e8fb96890c97ee8f89938d..1b93b6fd0fe445c89f6c81c5f5a4a40b1dafd57d 100644 (file)
@@ -32,6 +32,8 @@
 #define M_PI 3.14159265358979323846
 #endif
 
+#define PHP_ROUND_FUZZ 0.50000000001
+
 /* {{{ proto int abs(int number)
    Return the absolute value of the number */
 
@@ -143,9 +145,9 @@ PHP_FUNCTION(round)
 
                        return_val *= f;
                        if (return_val >= 0.0)
-                               return_val = floor(return_val + 0.5);
+                               return_val = floor(return_val + PHP_ROUND_FUZZ);
                        else
-                               return_val = ceil(return_val - 0.5);
+                               return_val = ceil(return_val - PHP_ROUND_FUZZ);
                        return_val /= f;
 
                        RETURN_DOUBLE(return_val);