PHP の round(0.49999999999) が 1 になるのか実際に試してみた

  以下のサイトにて,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)