Bug #15946 Updated: Math output errors
| From: | aubieweb at rogers dot com | Date: | Fri, 08 Mar 2002 12:19:24 +0000 |
| Subject: | Bug #15946 Updated: Math output errors | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-2017@lists.php.net to get a copy of this message | ||
ID: 15946
Updated by: aubieweb@rogers.com
Reported By: aubieweb@rogers.com
Status: Feedback
Bug Type: Math related
Operating System: Windows 2000
PHP Version: 4.1.1
New Comment:
Yes. Here is the exact code that shows the calculuation.
$check = $num % $divisor;
if ($hidenum && $divisor > 0 && $num % $divisor == 0) print
"<td><img
src='red.gif' width='$size' height='$size' alt='$num % $divisor =
$check'></td>\n";
As yuo can see, the calculation is very simple (top line) and the alt
of the image shows both numbers exactly and they haven't been changed.
In that piece of code I get the bad results but only AFTER the loop has
been running for some time.
Previous Comments:
------------------------------------------------------------------------
[2002-03-08 06:27:19] sander@php.net
(reclassified)
------------------------------------------------------------------------
[2002-03-08 06:20:38] sander@php.net
Are you completely sure that it's an error in PHP and not in your
algorithm?
------------------------------------------------------------------------
[2002-03-07 22:55:18] aubieweb@rogers.com
I wrote a script which output Pascal's triangle and then showed the
numbers which were divisible by a certain number in a different colour.
At first, this works fine. Then after the 20th row or so, the %
operator starts outputting incorrect numbers. For example, 37 % 4
returns 1. 24 % 4 returns 3. When those numbers are checked on their
own, it works fine. In the loops though, it starts giving incorrect
information after 20 rows. You can see this at
www.alkaline2.com/triangle.php
CODE
<?
$rows--;
for ($r = 0; $r <= $rows; $r++)
{
if ($hidenum) print "<table cellpadding='0' cellspacing='0'
border='1'
bordercolor='#000088' borderstyle='solid'><tr>\n";
if (!$hidenum) print "<table cellpadding='2' cellspacing='1'
border='0'><tr>\n";
for ($i = 0; $i <= $r; $i++)
{
$num = factorial($r)/(factorial($r - $i) * factorial($i));
if ($divisor > 0 && $num % $divisor == 0)
{
$bgcolor='#ff0000';
}
else
{
$bgcolor='#444444';
}
if (!$hidenum) print "<td bgcolor='$bgcolor'><span
class='text'>$num</span></td>\n";
$check = $num % $divisor;
if ($hidenum && $divisor > 0 && $num % $divisor == 0) print
"<td><img
src='red.gif' width='$size' height='$size' alt='$num % $divisor =
$check'></td>\n";
if ($hidenum && $divisor > 0 && $num % $divisor != 0) print
"<td><img
src='grey.gif' width='$size' height='$size' alt='$num % $divisor
=
$check'></td>\n";
if ($hidenum && $divisor == 0) print "<td><img src='grey.gif'
width='$size' height='$size' alt='$num % $divisor =
$check'></td>\n";
}
print "</tr></table>";
}
function factorial($x)
{
$total = 1;
for ($i = $x; $i > 1; $i--)
$total = $total * $i;
return $total;
}
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=15946&edit=1