I understand the issues about binary precision for floating point numbers on
standard base 2 systems but I'm unsure of the propper way to fix this
problem. Here is the base test case:
<?
$contract_amount = 9961.00;
$bill1 = .95;
$bill2 = .05;
$billable_this_month += ($contract_amount * $bill1);
$paid_to_date += ($contract_amount * $bill2);
echo "conditional: if(($paid_to_date + $billable_this_month) >=
$contract_amount)\n<br>\n";
if(($paid_to_date + $billable_this_month) >= $contract_amount) {
echo "true";
}
else {
echo "false";
}
?>
This is mostly a cut and paste of a problem that I am trying to fix for a
client for a particular record which is coming out of the database and not
evaluating like I want it to.
you would expect (498.05 + 9462.95) to be equal to 9961.00 . In the case of
this problem, all variables in question are of type double at time of
comparison.
ideas? I tried casting to various different types without success. I'd
prefer not to round if at all possible...
Thanks!
--
-------------------------
Marc Swanson
MSwanson Consulting
Phone: (603)868-1721
Fax: (603)868-1730
Mobile: (603)512-1267
[EMAIL PROTECTED]
http://www.mswanson.com
-------------------------
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]