比较PHP中的小数

时间:2010-09-14 08:55:08

标签: php

我有一个表单输入来获取一个数字(这是一个价格)。它可以是像小数字102,5。我必须将它与例如102,6的其他小数进行比较。 怎么办呢?我不想使用round()因为我可以完全比较。

3 个答案:

答案 0 :(得分:9)

您可以将absolute(即数字)差异与“epsilon”(您的“容差” 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!
}

并且,请阅读一下:“ What Every Computer Scientist Should Know About Floating-Point Arithmetic ”和“ Comparing floating point numbers ”。

此外,您可能会发现以下SO问题(和答案!)很有趣:


1 这是对的:决定是什么让这两个数字相等。它可以是0.1(使1.1等于1.0),0.011.021.03)等。

答案 1 :(得分:3)

不要将价格存储为浮点数,使用整数(存储美分,而不是美元)。

答案 2 :(得分:0)

只需将此格式设为小数

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

并比较