php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #43241 Float Precision/Representation and Modulo
Submitted: 2007-11-11 02:44 UTC Modified: 2007-11-11 15:08 UTC
From: quake5 at gmx dot de Assigned:
Status: Not a bug Package: Scripting Engine problem
PHP Version: 5.2.5 OS: MacOS
Private report: No CVE-ID: None
 [2007-11-11 02:44 UTC] quake5 at gmx dot de
Description:
------------
Float Precision/Representation and Modulo

Reproduce code:
---------------
<?php

var_dump(73.82 * 100 % 2);

?>

Expected result:
----------------
int(0)

Actual result:
--------------
int(1)

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-11-11 10:49 UTC] felipe@php.net
This is documented. 
See "Integer overflow" ( http://br.php.net/integer )

felipe@pena:~$ php -r 'var_dump(73.82 * 100);'
float(7382)
felipe@pena:~$ php -r 'var_dump(73.82 * 100 % 2);'
int(1)
felipe@pena:~$ php -r 'var_dump(round(73.82 * 100) % 2);'
int(0)
 [2007-11-11 15:08 UTC] derick@php.net
Floating point values have a limited precision. Hence a value might 
not have the same string representation after any processing. That also
includes writing a floating point value in your script and directly 
printing it without any mathematical operations.

If you would like to know more about "floats" and what IEEE
754 is read this:
http://docs.sun.com/source/806-3568/ncg_goldberg.html
 
Thank you for your interest in PHP.

.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon Dec 01 23:00:02 2025 UTC