|
Posted by Richard Lynch on 04/05/05 03:04
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
>
>
--
Like Music?
http://l-i-e.com/artists.htm
Navigation:
[Reply to this message]
|