Compare decimals in PHP

后端 未结 3 861
执念已碎
执念已碎 2021-01-28 18:38

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\'

相关标签:
3条回答
  • 2021-01-28 19:17

    Don't store prices as floats, use integers (store cents, not dollars).

    0 讨论(0)
  • 2021-01-28 19:26

    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:

    • Most effective way for float and double comparison
    • What's wrong with using == to compare floats in Java?

    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.

    0 讨论(0)
  • 2021-01-28 19:35

    Just make it decimal out of this format

    $kinda_decimal = "102,5";
    $kinda_decimal = floatval(str_replace(",",".",$kinda_decimal));
    

    and compare it

    0 讨论(0)
提交回复
热议问题