// Scheme
(print (* 1000000 8.2))
> 8199999.999999999
// Python
>>> 1000000 * 8.2
8199999.999999999
//PHP
> 1000000 * 8.2
> 8199999.999999999 // Scheme
(print (* 1000000 8.2))
> 8199999.999999999
// Python
>>> 1000000 * 8.2
8199999.999999999
//PHP
> 1000000 * 8.2
> 8199999.999999999 # Ruby 1.8.7
1.8.7 :022 > 1000000 * 8.2
=> 8200000.0
# Ruby 1.9.2
1.9.2p320 :001 > 1000000 * 8.2
=> 8199999.999999999 $ uname -p
x86_64
$ php -v
PHP 5.4.6-1ubuntu1 (cli) (built: Aug 22 2012 21:13:52)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
$ php -r 'var_dump(1000000 * 8.2);'
float(8200000)
$ printf("%lf\n", 1000000 * 8.2);
8200000.000000
Here, printf() is doing the necessary rounding to hide the fact that 8.2 isn't exactly representable. It's interesting that other languages don't do something similar when outputting a float to text. //Python
>>> repr(1000000 * 8.2)
'8199999.999999999'
>>> "%lf" % (1000000 * 8.2)
'8200000.000000'