|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2012-11-10 17:18 UTC] laruence@php.net
-Status: Open
+Status: Not a bug
[2012-11-10 17:18 UTC] laruence@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 01:00:02 2025 UTC |
Description: ------------ Using the modulus operator with the results of a call to log(N, 10) produces unexpected results when N % 3 = 0. Other arithmetic operations result as expected. Equivalent operations using a call to log10(N) rather than log(N, 10) result as expected. Using echo to display log() results will display the correct value. However, passing it through printf or sprintf will print or return the correct value minus 1. [ Note: phpinfo() on my computer reports a PHP version of 5.3.5-1ubuntu7.11. I selected what seemed to be the closest version available in the web form. ] Test script: --------------- $exp = 15; $n = pow(10, $exp); $base = 10; $log = log($n, $base); echo "log: ".$log."\n"; echo "log % 3: ".$log % 3 ."\n"; echo "log via sprintf: ".sprintf('%d', $log)."\n"; $log = log10($n); echo "log10: ".$log."\n"; echo "log10 % 3: ".$log % 3 ."\n"; echo "log10 via sprintf: ".sprintf('%d', $log)."\n"; Expected result: ---------------- log: 15 log % 3: 0 log via sprintf: 15 log10: 15 log10 % 3: 0 log10 via sprintf: 15 Actual result: -------------- log: 15 log % 3: 2 log via sprintf: 14 log10: 15 log10 % 3: 0 log10 via sprintf: 15