From: Sara Golemon Date: Thu, 3 Apr 2003 18:33:05 +0000 (+0000) Subject: Kludgy fix for floating point drift causing problems like range(1.0,1.5,0.1) == array... X-Git-Tag: RELEASE_0_5~167 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=465bb61357bca0b0014960d178024b4f5a1d8d8b;p=php Kludgy fix for floating point drift causing problems like range(1.0,1.5,0.1) == array(1.0,1.1,1.2,1.3,1.4); --- diff --git a/ext/standard/array.c b/ext/standard/array.c index 58b5349bab..32a0edde6e 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -81,6 +81,8 @@ php_array_globals array_globals; #define INTERSECT_NORMAL 0 #define INTERSECT_ASSOC 1 +#define DOUBLE_DRIFT_FIX 0.000000000000001 + PHP_MINIT_FUNCTION(array) { #ifdef ZTS @@ -1543,7 +1545,7 @@ double_str: err = 1; goto err; } - for (; low >= high; low -= step) { + for (; low >= (high - DOUBLE_DRIFT_FIX); low -= step) { add_next_index_double(return_value, low); } } else if (high > low) { /* Positive steps */ @@ -1551,7 +1553,7 @@ double_str: err = 1; goto err; } - for (; low <= high; low += step) { + for (; low <= (high + DOUBLE_DRIFT_FIX); low += step) { add_next_index_double(return_value, low); } } else {