[PHP] Re: Division [maybe a bug]

2008-05-11 Thread jo opp
2008/5/11 Chris W [EMAIL PROTECTED]:
 jo opp wrote:

  Hello!
 
  $var1= 2155243640%31104000;
  $var2= 2147309244%31104000;
 
  echo $var1 // Return -24651656
  echo $var2 // Return 1133244
 
  $var2 return the correct result, but $var1 is wrong (the correct
  result is 9067640)
 

  Probably because the maximum signed 32 bit integer value is
  2,147,483,648


OK, but with bigger numbers works fine again.
Right now I made a function to deal with this issue:

function remainder($dividend,$divisor){
$remainder= $dividend-(floor($dividend/$divisor)*$divisor);
return $remainder;
}

What do you think about it?

  if you are dealing with numbers that large, consider using some arbitrary
 precision math functions that can work with as large of numbers as you need.


  http://us3.php.net/manual/en/refs.mathcrypto.math.php



  --
  Chris W
  KE5GIX

  Protect your digital freedom and privacy, eliminate DRM,
  learn more at http://www.defectivebydesign.org/what_is_drm;

  Ham Radio Repeater Database.
  http://hrrdb.com


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: Division [maybe a bug]

2008-05-11 Thread Chris W

jo opp wrote:

2008/5/11 Chris W [EMAIL PROTECTED]:

jo opp wrote:


Hello!

$var1= 2155243640%31104000;
$var2= 2147309244%31104000;

echo $var1 // Return -24651656
echo $var2 // Return 1133244

$var2 return the correct result, but $var1 is wrong (the correct
result is 9067640)


 Probably because the maximum signed 32 bit integer value is
 2,147,483,648



OK, but with bigger numbers works fine again.
Right now I made a function to deal with this issue:

function remainder($dividend,$divisor){
$remainder= $dividend-(floor($dividend/$divisor)*$divisor);
return $remainder;
}

What do you think about it?



That will convert the numbers to floating point, which will give you 
round off error if the numbers get too big.


--
Chris W
KE5GIX

Protect your digital freedom and privacy, eliminate DRM,
learn more at http://www.defectivebydesign.org/what_is_drm;

Ham Radio Repeater Database.
http://hrrdb.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Re: Division [maybe a bug]

2008-05-10 Thread Chris W

jo opp wrote:

Hello!

$var1= 2155243640%31104000;
$var2= 2147309244%31104000;

echo $var1 // Return -24651656
echo $var2 // Return 1133244

$var2 return the correct result, but $var1 is wrong (the correct
result is 9067640)


Probably because the maximum signed 32 bit integer value is
2,147,483,648

if you are dealing with numbers that large, consider using some 
arbitrary precision math functions that can work with as large of 
numbers as you need.



http://us3.php.net/manual/en/refs.mathcrypto.math.php



--
Chris W
KE5GIX

Protect your digital freedom and privacy, eliminate DRM,
learn more at http://www.defectivebydesign.org/what_is_drm;

Ham Radio Repeater Database.
http://hrrdb.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php