我无法让两个相同的浮点值匹配。脚本背后的基础是我查询一个 API 以获取收入,如果记录在我的 MySQL 数据库中不存在,则创建它,但如果它确实存在,则查找更改,然后更新或跳过记录。
让我们以一条记录为例。收入数字是 51.02,这被强制为浮点数,然后保存在数据库中。数据库列类型是浮点数。
当我再次查询 API 时,该记录已经存在,所以我现在检查收入数据的变化。收入数字再次为 51.02(无变化)并继续浮动。然后我将拉出存储的数字(也是一个浮点数)并且值是相同的。但是,PHP 告诉我浮点数不匹配,因此应该更新记录。为什么是这样?!
要检查的代码:
// The placeholder to notify the script that the record should be updated
// Default is false. The record does not need updating.
$update_record = false;
// This is the database record
// I'm reinforcing the fact it needs to be a float
// The second line isn't actually needed
$record = $query_for_revenue_item->row ();
$record->basket_value = (float) $record->basket_value; // 51.02
// The API query data is stored in $transaction
// Again, this line isn't actually needed but reinforces the float
$transaction['basket'] = (float) $transaction['basket']; // 51.02
// Check for changes in revenue
// At this stage both floats are the same (51.02)
if ($record->basket_value != $transaction['basket']) {
$update_record = true;
}
// If I output the result
var_dump ($update_record) // returns boolean(true)
// The full record log (output below)
echo "Change data from \""; var_dump ($record->basket_value); echo "\" to \""; var_dump ($transaction['basket']); echo "\"";
// The output
Change data from "float(51.02)" to "float(51.02)"
有人有想法么?浮动比较与其他比较不同吗?
提前致谢。