developer's diary

最近はc#のエントリが多いです

PHPで桁あふれなく演算する。GMP(GNU Multi-Precision Library)を使用する。

もしもハイパーインフレになったら。多倍長演算の仕事が増えるかも。 - 4丁目よりに書いてある
ハイパーインフレにPHPでも耐えれるように。

ソース

test.php

<?php

//GMP(GNU Multi-Precision Library)
$n = gmp_init('999999999999999999999999999999999999999999999999999999999999999999999999');
$n = gmp_add($n,gmp_init(1)); //加算
echo gmp_strval($n)."\n";

$n = gmp_mul($n,gmp_init(2)); //減算
echo gmp_strval($n)."\n";

$n = gmp_sub($n,gmp_init(2)); //乗算
echo gmp_strval($n)."\n";

$n = gmp_divexact($n,gmp_init(2)); //除算
echo gmp_strval($n)."\n";

結果

C:\>php test.php
1000000000000000000000000000000000000000000000000000000000000000000000000
2000000000000000000000000000000000000000000000000000000000000000000000000
1999999999999999999999999999999999999999999999999999999999999999999999998
999999999999999999999999999999999999999999999999999999999999999999999999

データベースにはStringで入れるのかなぁ。

その他のLL言語

その他のLL言語は
多倍長整数演算の速度比較 - まめめもで速度比較(ruby,python,perl)とかが。