Re: Re: Jaw Breaker - What's the ansewer?
| From: | graeme | Date: | Wed, 20 Apr 2005 11:45:42 +0000 |
| Subject: | Re: Re: Jaw Breaker - What's the ansewer? | ||
| References: | 1 2 3 | Groups: | php.windows |
| Request: | Send a blank email to php-windows+get-25886@lists.php.net to get a copy of this message | ||
Yes it is an issue with floating point numbers since:
8.35 will give the answer but if you increment by .01 in a loop then you will not get the answer, when it is on 8.35. However, increment by 0.001 then 8.35 will provide the correct answer. It's all to do with how in calculates 0.01 in binary, a rational fraction in binary.
graeme.
JC Botha wrote:
It is possible, and "10.642868165785" is incorrect. The question says "$x is a number between 1 and 10 and has 2 decimal places." Try again, if more try then I will post the source code that generates the asnwer? On 4/20/05, M. Sokolewicz <tularis@php.net> wrote:-- Experience is a good teacher, but she sends in terrific bills. Minna AntrimJC Botha wrote:The following is a section of PHP code (see Apache.org and PHP.net). function f($c) { $c++; if ($c % 2) { return f($c); } return $c++; } function g($n) { for ($i=1;$i<10;$i++) {it's not a jawbreaker, it's impossible IMO. f() always returns the number if it's uneven, or if it's even, it returns (n+1). So, it always returns uneven. which means the result of g() can *never* be even. [[side note: unless "return $c++;" does first add 1 to it before returning, but I think it doesn't, since it's a postincrement operator. ]] -- PHP Windows Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php$n = f($n*$i);} return ($n); } print(g($x)); What is the smallest value that $x can have if 4277108 is outputted to the screen after running this code? $x is a number between 1 and 10 and has 2 decimal places.