PHP の round(0.49999999999) が 1 になるのか実際に試してみた
2007-06-02-1: [PHP]
以下のサイトにて,PHP の round() の挙動について解説されていました.
そこで,実際に 1 になるのかどうか試してみました.
- hnwの日記 - PHPの奇妙なround関数
http://d.hatena.ne.jp/hnw/20070515
結論から書くと,1 になる場合もならない場合もありました.こういうのが一番困ります.
分かったことは,バージョンによる差ではなくて,環境による差だろうということです.
round() を使う前にその環境で確認しておくことが重要ですね.
1 になる環境
$ uname -mrs
Linux 2.4.9-e.9.18mlsmp i686
$ php -v
PHP 4.3.3 (cli) (built: Oct 9 2003 14:50:50)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(1)
$ uname -mrs
Linux 2.6.9-42.ELsmp i686
$ php -v
PHP 4.4.7 (cli) (built: May 28 2007 14:26:24)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(1)
$ uname -mrs
Linux 2.6.17.13-smp i686
$ php -v
PHP 4.4.6 (cli) (built: May 2 2007 16:49:35)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(1)
1 にならない (0 になる) 環境
$ uname -mrs
Linux 2.4.9-e.9.18mlsmp i686
$ php -v
PHP 4.3.2 (cli) (built: May 10 2004 15:01:20)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
SunOS 5.10 i86pc
$ php -v
PHP 4.4.7 (cli) (built: May 13 2007 13:56:00)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
SunOS 5.10 i86pc
$ php -v
PHP 5.2.2 (cli) (built: May 13 2007 14:15:44)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
SunOS 5.10 sun4u
$ php -v
PHP 5.2.1 (cli) (built: Feb 28 2007 16:54:38)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
Linux 2.6.17.13-smp i686
$ php -v
PHP 4.4.4 (cli) (built: Jan 8 2007 00:09:11)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
Linux 2.4.32 i686
$ php -v
PHP 4.4.4 (cli) (built: Sep 9 2006 10:36:27)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
Linux 2.6.17.13-smp i686
$ php -v
PHP 5.2.2 (cli) (built: May 25 2007 00:09:33)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)
$ uname -mrs
SunOS 5.8 i86pc
$ php -v
PHP 4.3.4 (cli) (built: Nov 30 2005 06:29:37)
Copyright (c) 1997-2003 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2003 Zend Technologies
$ php -r 'var_dump(round(0.49999999999));'
float(0)