【PHP】超巨大な数値の足し算引き算を行う方法。

PHPで巨大過ぎる数をintのまま扱おうとするとPHP_INT_MAXで定められた値に丸め込まれてしまい正しい計算が行えないため、どうしても演算を行いたい場合は文字列として操作する必要がある。

ちなみにPHPでの最大整数は32bit環境では-2^31から2^31-1。64bit環境では-2^63から2^63-1となる。

そんな大きい数字扱う機会ねーよ!

と思っていた時代が僕にもありました。

というのもTwitterに関連するサービスを作っていた際、APIから帰ってくるツイートIDが18桁とかなんですよ。ええ。
皆さんご存知の通りPHP32bitだと扱える整数は10桁、64bitならまぁ19桁まで扱えるんですけれど自分の環境だと入ってない。

ちなみに自分の環境がPHP32bitかPHP64bitかを確認するには、下記コマンドをCLIから実行してみればわかる。

4と表示されれば32bit
8と表示されれば64bit

である。

で、手っ取り早く文字列のまま足し算、引き算が出来ないものかと調べていたら、下記ブログを発見。

http://ambiesoft.fam.cx/blog/archives/1822

これはマジで便利。

PearのMath_BigIntegerを用いても可能とのこと。

http://pear.php.net/package/Math_BigInteger

試しに中身を見てみたら恐ろしくゴツイライブラリだった件。