フィボナッチ
インクリメントを使ってフィボナッチ数列を書いてみたけど、
インクリメントを無理やり使ってる感が否めないw
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ふぃぼなっち</title> <style> table{ border-collapse:collapse; } th{ border:1px solid #666; width:100px; } td{ border:1px solid #666; width:100px; } </style> <!--[if lte IE 9]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if lte IE 9]> <script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script> <![endif]--> </head> <body> <table><tr> <?php $max=100; $num1=1; $num2=1; print("<td>{$num1}</td>"); print("<td>{$num2}</td>"); for($i=2;$i<$max;$i++){ $mod = $i%5; $tmp=$num1; $num1 = $num2; $num2 += $tmp; if($mod==0){ print("<td>{$num2}</td></tr>".closeTag($i)); }else{ print("<td>{$num2}</td>"); } } function closeTag($index){ $rtn; if($index!=100){ $rtn="</tr>"; } return $rtn; } ?> </table> <?php print("<br/>int型で表示できる最大値:"); var_dump(PHP_INT_MAX); print("<br/>int型で表示できる最小値:"); var_dump(-PHP_INT_MAX-1); ?> </body> </html>
ちなみにphpは以外に頭が悪くて型宣言ができません。
integer型の最大値は2147483647、最小値は-2147483648です
この範囲を超えると浮動小数点表示になり、誤差が出てきます。
(詳しくは「浮動小数点 誤差」とかで調べてください)
この回避方法は。。。。。
ありません。
どうやっても小数点になります。
本気ででかい数値を扱うなら「PHP_INT_MAX」という定義済み定数にinteger型の最大値が入っているので
これを超えたら超えた値から最大値を引いて扱って、最終的には・・・・まあ、使えないですね。
基本的にスクリプトはこの辺は弱いかなー