Php if 语句问题。返回错误结果

问题描述 投票:0回答:2

我的代码返回了错误的值。 结果是“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 编辑器上运行代码,但仍然得到错误的结果

php if-statement
2个回答
0
投票

这是因为浮点不精确。

$value
的实际值不仅仅是
7
,而是
7.00000000007
。您可以看到,如果在
$value = (($price - $requestprice) / $price) * 100;
:

之后添加以下行
printf("%.10f", $value);

由于

7.00000000007
大于
7
,因此代码采用正确的分支。


0
投票

$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';
}

在线演示

© www.soinside.com 2019 - 2024. All rights reserved.