[PHP] Help. Floats turning into really small numbers? x.xxxxxxxxxxxxxxxxxxxxxxE-xx
I'm having trouble figuring out why subtraction of two floats are giving me a very small number. I'm thinking it has something to do with the internals of type casting, but i'm not sure. If anyone has seen this or can give me some suggestions, please. I have 2 variables that go through a while loop and are added/subtracted/ multipled. InvAmt and InvPay are shown as floats but when they are subtracted, they give me a really small number // code var_dump($InvAmt); var_dump($InvPay); var_dump($InvAmt-$InvPay); // output float(18.49) float(18.49) float(2.1316282072803E-14) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] [Q] mail() security
Eric, It sounds like you just need to do some reading on best practices of security when writing php code. It's pretty vast what one can do when trying to hack a php application and depending on what php server settings are set, you may need to do certain things. I'd suggesting reading / google php security and viewing pages like the following to answer your question. It may only answer your question in the long run, but there are many more things to know about besides htmlentities to make sure your application is secure. I actually need to do some reading about them. Once in a while http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/ Also events like the following are good to go to expecially if you can get your company to pay for them. http://www.osevents.com/page5.html? Eric Gorr wrote: Chris W. Parker wrote: Or in a less extreme case, your computer get hijacked and used to send spam because you used htmlentities() instead of strip_tags(). Well, this is why I asked the question to begin with. I am concerned (as everyone _should_ be) about such things and desire to do my best to prevent them. Now, as near as I can tell, strip_tags is the only thing one really needs to do to be safe. But, one can use htmlentities to potentially preserve useful text, if it is important to do so and still remain safe - with the downside being having a messier body then may be necessary. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Help. Floats turning into really small numbers? x.xxxxxxxxxxxxxxxxxxxxxxE-xx - Narrowed it down!
Ok i've narrowed it down a little bit but still can't figure it out.. Here's the code and what I get for the output. Does anyone know what's going on? Can someone else run it on their computer and see if they get the same results? ?php $a = 17.00 * 1; $a+= 1.10 * 1; $a+= 0.32 * 1; $a+= 0.07 * 1; print $a.br; // 18.49 var_dump($a); // float(18.49) var_dump($a-18.49); // float(3.5527136788005E-15) ? Anthony Tippett wrote: I'm having trouble figuring out why subtraction of two floats are giving me a very small number. I'm thinking it has something to do with the internals of type casting, but i'm not sure. If anyone has seen this or can give me some suggestions, please. I have 2 variables that go through a while loop and are added/subtracted/ multipled. InvAmt and InvPay are shown as floats but when they are subtracted, they give me a really small number // code var_dump($InvAmt); var_dump($InvPay); var_dump($InvAmt-$InvPay); // output float(18.49) float(18.49) float(2.1316282072803E-14) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] PHP Tool to answer emails
I think what you are looking for is a combination of programs. A mailing list that customers can view answers of emails try mailman or smartlist. Perhaps just a mailint list would give you want you want. If you are looking for more of a trouble ticket program, or FAQ program there are serveral at freshmeat.net but haven't used many of them. Daniel Baughman wrote: Hi all, I am looking for a php tool that will provide email tracking and a web interface to an email box. Pretty much, we get lots of emails directed to an administrative email account (most of the valid emails) that need response. To the point that one person is getting over whelmed. It would be nice if someone had a tool already made that would check the box, download the email, mark the receipt time, then present them to be answered on a web site for employees, document the answer, etc. etc.. Anyone know of anything? Dan Baughman IT Technician Professional Bull Riders, Inc. 719-471-3008 x 3161 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Help. Floats turning into really small numbers? x.xxxxxxxxxxxxxxxxxxxxxxE-xx - Narrowed it down!
btw, thanks for your response. I'm not sure as if I understand why. It's not like I'm using a very precise number when dealing with the hundreths place. Even without the multiplication the number gets messed up. eg. $a = 17.00; $a+= 1.10; $a+= 0.32; $a+= 0.07; print $a.br; // 18.49 var_dump($a); // float(18.49) var_dump($a-18.49); // float(3.5527136788005E-15) I'm just trying to add money amounts? Can I not rely on floats to do this? Richard Lynch wrote: Floats are NEVER going to be coming out even reliably. You'll have to check if the difference is less than X for whatever number X you like. Or you can look at something like BC_MATH where precision can be carried out as far as you like... But what you are seeing is to be expected. That's just the way computers work, basically. On Mon, April 4, 2005 5:07 pm, Anthony Tippett said: Ok i've narrowed it down a little bit but still can't figure it out.. Here's the code and what I get for the output. Does anyone know what's going on? Can someone else run it on their computer and see if they get the same results? ?php $a = 17.00 * 1; $a+= 1.10 * 1; $a+= 0.32 * 1; $a+= 0.07 * 1; print $a.br; // 18.49 var_dump($a); // float(18.49) var_dump($a-18.49); // float(3.5527136788005E-15) ? Anthony Tippett wrote: I'm having trouble figuring out why subtraction of two floats are giving me a very small number. I'm thinking it has something to do with the internals of type casting, but i'm not sure. If anyone has seen this or can give me some suggestions, please. I have 2 variables that go through a while loop and are added/subtracted/ multipled. InvAmt and InvPay are shown as floats but when they are subtracted, they give me a really small number // code var_dump($InvAmt); var_dump($InvPay); var_dump($InvAmt-$InvPay); // output float(18.49) float(18.49) float(2.1316282072803E-14) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Help. Floats turning into really small numbers? x.xxxxxxxxxxxxxxxxxxxxxxE-xx - Narrowed it down!
Thanks to everyone that helped. After further googling, bug 9288 had a good explanation of what was going on ( which is not a bug) http://bugs.php.net/bug.php?id=9288edit=3 I'll just include the answer for anyone that comes upon this tread on a search engine. [15 Feb 2001 2:55pm CET] hholzgra at php rot dot fot net short answer: never use floats or doubles for financial data! longer answer: the internal number format in modern computers is binary (base 2) and not decimal (base 10) for performance and complexity reasons while it is possible to convert decimal numbers into binaries and back this does not hold true for fractions something like 0.3 (decimal) would be a periodic binary fraction like 10/3 is 0.... in decimal this leads to loss of precision when calculation with decimal fractions as you have when storing currency values solution: if you just summ up values then you should store values in the smalest unit your currency has (pennies?) instead of what you are used to (Pounds?) to totally avoid fractions if you cannot avoid fractions (like when dealing with percentage calculations or currency conversions) you should just be aware of the (usually very small) internal conversion differences (0.27755575615629 in your example) or use the bcmath extension, although for monetary values you should go perfectly fine with using round(...,2) on your final results Anthony Tippett wrote: btw, thanks for your response. I'm not sure as if I understand why. It's not like I'm using a very precise number when dealing with the hundreths place. Even without the multiplication the number gets messed up. eg. $a = 17.00; $a+= 1.10; $a+= 0.32; $a+= 0.07; print $a.br; // 18.49 var_dump($a); // float(18.49) var_dump($a-18.49); // float(3.5527136788005E-15) I'm just trying to add money amounts? Can I not rely on floats to do this? Richard Lynch wrote: Floats are NEVER going to be coming out even reliably. You'll have to check if the difference is less than X for whatever number X you like. Or you can look at something like BC_MATH where precision can be carried out as far as you like... But what you are seeing is to be expected. That's just the way computers work, basically. On Mon, April 4, 2005 5:07 pm, Anthony Tippett said: Ok i've narrowed it down a little bit but still can't figure it out.. Here's the code and what I get for the output. Does anyone know what's going on? Can someone else run it on their computer and see if they get the same results? ?php $a = 17.00 * 1; $a+= 1.10 * 1; $a+= 0.32 * 1; $a+= 0.07 * 1; print $a.br; // 18.49 var_dump($a); // float(18.49) var_dump($a-18.49); // float(3.5527136788005E-15) ? Anthony Tippett wrote: I'm having trouble figuring out why subtraction of two floats are giving me a very small number. I'm thinking it has something to do with the internals of type casting, but i'm not sure. If anyone has seen this or can give me some suggestions, please. I have 2 variables that go through a while loop and are added/subtracted/ multipled. InvAmt and InvPay are shown as floats but when they are subtracted, they give me a really small number // code var_dump($InvAmt); var_dump($InvPay); var_dump($InvAmt-$InvPay); // output float(18.49) float(18.49) float(2.1316282072803E-14) -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php