[PHP-users 1537] Re: PHPのint 境界とfloatへの型変換

S.Sugichan php-users@php.gr.jp
Mon, 27 Aug 2001 08:24:10 +0900


杉山です。

坂内様、ありがとうございます。

> Java は,言語仕様で各整数型の大きさを明確に定めていますが,

Javaについてご意見ありがとうございます。Javaの場合プラットフォーム依存を
少なくするという考えの基の言語使用なのかな?と思われます。

> PHP の integer 型は,言語C の long 型で実装されています.
> C90 規格に準拠した処理系であれば,32bit 以上であることが保証されます.
> 「以上」なので 64bit かも 128bit かもしれません.

longは、C90 規格に準拠した場合,32bit 以上の可能性があるんですね。
#Cのlongは32bitだと思いこんでた・・・

>   $i = 0x10000000;
>   if ( gettype( $i ) == "double" ) {
>     /* 33 bit な数は int の限界を越えるようだ */
>   }

処理としては可能ですが、実際書かないですねここまで。

> 手元の環境では,PHP-users 1211 をあてても実行時間に有意な差はないです.
> 毎回変換が必要なわけではなく,元の値を,LONG_MAX 
> ( -- の場合は LONG_MIN ) と比較するだけですから.

PHP-users 1211 をあてた場合判定を行っているのでそれほど実行に差はないん
でしょう。PHP-users 1211 の内容を見る限りでは、PHP-users 1211 をあてる以
前は判定しないで処理していたので、若干変わるかな?とのことです。


大垣様、貴重な指摘ありがとうございます。

> 確か、これはバグレポートされておりFIXEDになっていたと思います。
> 4.0.7-devまたはRC1を試して見てはどうでしょうか?
> 
> # float(double) int(long) convert 等のKeywordで検索すると見つか
> # ると思います。IIRC

なるほど、4.0.7でFIXされるんですね。ちょっとこちらの英語力と該当ページを
探す力がなかったため、FIXEDの確認が出来ませんでした。

4.0.7で本内容に関してFIXされると言うこともあり長々と続いたこのスレッドも
特に新しい発見がないようであればこの辺で終了したいと思います。

みなさま貴重な意見ありがとうございました。

S.Sugichan
Mail: sugichan@tkd.att.ne.jp