[PHP-users 24727] Re: 四捨五入
菊澤 正明
kikuzawa @ cyber-coo.com
2005年 2月 26日 (土) 13:17:38 JST
菊澤 です。
あれからいろいろ試したのですが、環境Aでは、1.005は
1.00499...として内部では表現されているようです。
ですので、number_formatをかけると1.00になってしまう。
$a = 1.005;
echo (int)($a * 1000);
の結果が、1004になってしまいます。
回避するには、一旦文字列にしてやるとうまくいきます
echo (int)(string)($a * 1000);
文字列にする際に1004.999...を1005に変換するようです。
1005にも内部丸目誤差でるとまずいですけど。
On Sat, 26 Feb 2005 12:57:42 +0900
lange <lange @ style.ne.jp> wrote:
> tosaと申します。
>
> > number_format関数の仕様が変わったのでしょうか?
> > それともOSの問題でしょうか?
> 手元で実験してみました。
> 環境別では次のようになりました。
>
> OS Linux + PHP-4.3.10
> 結果
> 1.01
> 2.01
> 3.01
>
> OS Windows2k + PHP-5.0.1
> 結果
> 1.00
> 2.01
> 3.01
>
> OSによる丸め誤差の違いのような気もするんですが、詳しい事
> は識者の方にお任せいたします。ちなみに
> http://jp.php.net/round
> のstdroundという方法を使うと求めたい値が得られるかもしれま
> せん。
>
> では失礼します。
>
> tosa lange @ style.ne.jp
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
--------------------------------------------
菊澤 正明 mailto:kikuzawa @ cyber-coo.com
(有)サイバー・クー http://www.cyber-coo.com
phone.03-5785-4658 fax.03-5785-4659
PHP-users メーリングリストの案内