浮动和具有相同值的字符串,PHP中的错误结果

时间:2019-04-05 08:08:30

标签: php

此操作

$data['can_redeem'] = $data['payments_client']['accumulated']>=floatval($data['charge_limit'])

其中$data['payments_client']['accumulated'] = 7.0,而$data['charge_limit'] =“ 7”表示false。必须与类型有关,但是在外观上,两个变量都具有相同的值。

1 个答案:

答案 0 :(得分:1)

代码

$data['payments_client']['accumulated'] = 7.0;
$data['charge_limit'] = "7" ;
$data['can_redeem'] = $data['payments_client']['accumulated'] >= floatval($data['charge_limit']);
echo ($data['can_redeem']? 'True': 'False');

模拟您的示例,在这种情况下,您将按照注释中的建议将结果显示为“ True”。

但是,一般而言,使用起来更安全:

$data['can_redeem'] = abs($data['payments_client']['accumulated']-floatval($data['charge_limit'])) < 0.0001;

作为条件,因此没有浮点问题的风险。请注意,您可以根据需要将“ 0.0001”更改为“ 0.01”或“ 0.000001”。

如果您仍然收到'False',则需要调试代码以检查$ data ['payments_client'] ['accumulated']和$ data ['charge_limit']中的值。