I have a form input to get a number (it is a price). It can be a decimal like 102,5. I have to compare it with an other decimal for exemple 102,6. How can handle this ? I don\'
Don't store prices as floats, use integers (store cents, not dollars).
You could compare the absolute (i.e., numerical) difference to an "epsilon" (your "tolerance" 1):
$epsilon = 0.01;
$diff = abs(102.5 - 102.6); // .1
if ($diff <= $epsilon) {
// The numbers are equal
} else {
// The numbers are not equal enough!
}
And, a little reading: "What Every Computer Scientist Should Know About Floating-Point Arithmetic" and "Comparing floating point numbers".
Also, you may find the follow SO questions (and answers!) interesting:
1 That's right: You get to decide what makes the two numbers equal. It could be 0.1
(making 1.1
equal to 1.0
), 0.01
(1.02
~ 1.03
) etc.
Just make it decimal out of this format
$kinda_decimal = "102,5";
$kinda_decimal = floatval(str_replace(",",".",$kinda_decimal));
and compare it