Division [maybe a bug]

This is a discussion on Division [maybe a bug] within the PHP General forums, part of the PHP Programming Forums category; Hello! $var1= 2155243640%31104000; $var2= 2147309244%31104000; echo $var1 // Return -24651656 echo $var2 // Return 1133244 $var2 return the correct result, ...


Go Back   Usenet Forums > PHP Programming Forums > PHP General

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-10-2008
jo opp
 
Posts: n/a
Default Division [maybe a bug]

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)

¿?

Thanks for the help
Reply With Quote
  #2 (permalink)  
Old 05-11-2008
Chris W
 
Posts: n/a
Default Re: Division [maybe a bug]

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
Reply With Quote
  #3 (permalink)  
Old 05-11-2008
jo opp
 
Posts: n/a
Default Re: Division [maybe a bug]

2008/5/11 Chris W <2wsxdr5@cox.net>:
> 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
>

Reply With Quote
  #4 (permalink)  
Old 05-12-2008
Chris W
 
Posts: n/a
Default Re: Division [maybe a bug]

jo opp wrote:
> 2008/5/11 Chris W <2wsxdr5@cox.net>:
>> 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
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 08:06 PM.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0