PHPが大数(浮動小数点数)の取り残しを実現する方法

1301 ワード

本稿では,PHPが大数(浮動小数点数)の剰余を実現する方法について述べる.皆さんの参考にしてください.具体的には以下の通りです.
一般に,取余演算を行う最初に考えられるのはパーセンテージ%であるが,除数がint範囲を超える大きな数値である場合,取余は正確ではない.
php大数(浮動小数点数)取余関数:

/**
 * php    
 *
 * @param int or float $bn   
 * @param int $sn    
 * @return int   
 */
//  (   )    
function Kmod($bn, $sn) {
  return intval(fmod(floatval($bn), $sn));
}


テストコード:

//  (   )    
function Kmod($bn, $sn) {
  return intval(fmod(floatval($bn), $sn));
}
//      
function mod($bn, $sn) {
  return $bn%$sn;
}
//   int  
$bn = PHP_INT_MAX;
$sn = 11;
var_dump($bn);
var_dump(Kmod($bn, $sn));
var_dump(mod($bn, $sn));
//    int   1
$bn = PHP_INT_MAX + 1;
var_dump($bn);
var_dump(Kmod($bn, $sn));
var_dump(mod($bn, $sn));


実行結果:

int 2147483647
int 1
int 1
float 2147483648
int 2
int -2


PHPに関する内容についてもっと兴味のある読者は、「PHP数学演算技巧総括」、「PHP演算と演算子用法総括」、「php文字列(string)用法総括」、「PHP配列(Array)操作技巧大全」、「PHP常用遍歴アルゴリズムと技巧総括」、「PHPデータ構造とアルゴリズム教程」、「phpプログラム設計アルゴリズム総括」、「php正規表現用法総括」および「php一般データベース操作テクニック要約」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.