2014年03月25日

PHPで誤差無しで小数の切り捨てを行う

PHPで小数の切り捨てを丸め誤差を無くやる方法です。

PHPの関数を使うと、
pow()して位を揃えて⇒floor()で切り捨て
という処理になりますが、これだと丸め誤差が発生してしまいます。

ですので、演算をしないで文字列のまま切り捨てる方法で
誤差を発生させないようにします。

※処理対象の値がマイナスの場合は注意して下さい
floor(-1.8)は「-2」ですが、下記ソースでは「-1」となります。


【ソース例】

function kirisute($data,$keta){
$wk = $data;
$pos = strpos($wk, '.');
if ($pos){
//小数がある
$wk = substr($wk,0,$pos+$keta+1);
}
return $wk;
}


上記は切り捨ての場合ですが、切り上げ、四捨五入も
最終桁の値を判定してやれば、ほぼ同じようにできます。
posted by pltokyo at 11:50| Comment(0) | PHP