フィボナッチ

インクリメントを使ってフィボナッチ数列を書いてみたけど、
インクリメントを無理やり使ってる感が否めない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型の最大値が入っているので
これを超えたら超えた値から最大値を引いて扱って、最終的には・・・・まあ、使えないですね。

基本的にスクリプトはこの辺は弱いかなー