Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
PHP program to compare float values
Comparing float values in PHP requires special attention due to floating-point precision issues. Direct equality comparison (==) can fail with floats, so we use epsilon-based comparison to check if values are "close enough".
Basic Float Comparison
The most reliable method uses abs() function with a small tolerance value (epsilon) ?
<?php
$val_1 = 56.5325;
$val_2 = 90.899;
$epsilon = 0.0001;
if(abs($val_1 - $val_2) < $epsilon)
{
echo "The values are same";
}
else
{
echo "The values are not same";
}
?>
The values are not same
Why Direct Comparison Fails
This example demonstrates why == comparison can be unreliable with floats ?
<?php
$a = 0.1 + 0.2;
$b = 0.3;
// Direct comparison (unreliable)
if($a == $b) {
echo "Equal using ==<br>";
} else {
echo "Not equal using ==<br>";
}
// Epsilon comparison (reliable)
$epsilon = 0.0001;
if(abs($a - $b) < $epsilon) {
echo "Equal using epsilon method";
} else {
echo "Not equal using epsilon method";
}
?>
Not equal using == Equal using epsilon method
Comparison Function
You can create a reusable function for float comparison ?
<?php
function floatEquals($a, $b, $epsilon = 0.0001) {
return abs($a - $b) < $epsilon;
}
$val1 = 1.00000001;
$val2 = 1.00000002;
if(floatEquals($val1, $val2)) {
echo "Values are approximately equal";
} else {
echo "Values are different";
}
?>
Values are approximately equal
Conclusion
Always use epsilon-based comparison for float values in PHP instead of direct equality operators. The abs() function with a small tolerance value ensures reliable comparison despite floating-point precision limitations.
Advertisements
