Bug #15946 Updated: Math output errors

From: 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

« previous php.bugs (#2017) next »