[PHP-users 30824] Re: floor 関数の切捨て処理について

橋本 光義 hashimitsujp @ hotmail.com
2006年 11月 29日 (水) 11:25:32 JST


こんにちわ、hashiと申します

マニュアルにはこうあります

-> value をこえない最大の整数の値を返します

つまり、引数の値「以下」ではなく、値「より小さい」最も近い数
という意味になるので 7020 < 7021 で 7020 が反ってくるのだと思います

roundだと四捨五入になってしまうので、自前で

function my_float($value) {
	$value = explode(".", $value);
	return is_set($value[0]) ? $value[0] : FALSE;
}

みたいなメソッドを定義すれば一応期待されている値は取得出来るような気がしま
す。
私は知らないのですが標準関数に同じようなメソッドがあればそちらを使用してもい
いかもしれません。

>From: <hellow_miz @ yahoo.co.jp>
>Reply-To: PHP-users ML <php-users @ php.gr.jp>
>To: php-users @ php.gr.jp
>Subject: [PHP-users 30817]floor 関数の切捨て処理について
>Date: Tue, 28 Nov 2006 19:27:34 +0900 (JST)
>
>初めてメールさせていただきます、mzと申します。
>
>
>floor関数にて、切捨て処理を行いたいのですが
>下記計算をPHPにて行うと、本来なら7021となる
>べき値が7020となってしまいます。
>
>やりたいこととしては、$a、$b、$cを
>基に計算し、値について小数点以下を切り捨てたいのですが
>floor関数を利用した場合以下現象が発生してしまいます。
>
>これはどうしてでしょうか?
>お手数ですが、ご助言の程お願いいたします。
>
><?php
>$a=100000;
>$b=70.21;
>$c=1000;
>
>$value = floor($a * $b / $c);
>
>echo $value ."\n";
>
>?>
>
>
>--------------------------------------
>Start Yahoo! Auction now! Check out the cool campaign
>http://pr.mail.yahoo.co.jp/auction/
>_______________________________________________
>PHP-users mailing list  PHP-users @ php.gr.jp
>http://ml.php.gr.jp/mailman/listinfo/php-users
>PHP初心者のためのページ - 質問する前にはこちらをお読みください
>http://www.php.gr.jp/php/novice.php3

_________________________________________________________________
Hotmail に直接アクセス!MSN がさらに使いやすく http://jp.msn.com/ 



PHP-users メーリングリストの案内