我的代码返回了错误的值。 结果是“7price3”,但这是错误的。 7 应该落在第二个 if 语句上,因为 $value 大于 5 且小于或等于 7。您可以尝试使用 php 编辑器,它将在第三个 if 语句上返回。
$price = 100;
$requestprice = 93;
$value = (($price - $requestprice) / $price) * 100;
if ($value <= 5) {
echo $value . ' price 1';
} else if ($value > 5 && $value <= 7) {
echo $value . ' price 2';
} else if ($value > 7 && $value <= 10) {
echo $value . ' price 3';
}
尝试在任何 php 编辑器上运行代码,但仍然得到错误的结果
这是因为浮点不精确。
$value
的实际值不仅仅是 7
,而是 7.00000000007
。您可以看到,如果在 $value = (($price - $requestprice) / $price) * 100;
: 之后添加以下行
printf("%.10f", $value);
由于
7.00000000007
大于 7
,因此代码采用正确的分支。
$value
是一个浮点值,将其转换为整数以便准确比较。而且,您不需要重复比较。 另请参阅
<?php
$price = 100;
$requestprice = 93;
$value = intval((($price - $requestprice) / $price) * 100);
if ($value <= 5) {
echo $value . ' price 1';
} else if ($value <= 7) {
echo $value . ' price 2';
} else if ($value <= 10) {// or skip this if condition
echo $value . ' price 3';
}