【发布时间】:2018-06-05 13:43:39
【问题描述】:
如果条件我有这个:
if ($dc_real_vol != $dc_sum_vol) {
echo '||+++ REAL VOL ' . $dc_real_vol . PHP_EOL;
echo '||+++ SUM VOL ' . $dc_sum_vol . PHP_EOL;
echo '||+++ THIS TRADE IS DAMAGE ' . PHP_EOL;
}
当我检查输出时:
||+++ REAL VOL 0.60533000
||+++ SUM VOL 0.60533
||+++ THIS TRADE IS DAMAGE
为什么 PHP 认为 0.60533000 与 0.60533 不同?如何使这个条件标记为真?
更新:
我尝试了下面 Loek 的解决方案,并像这样更改了我的代码:
$dc_real_vol = (float) $dc_real_vol;
$dc_sum_vol = (float) $dc_sum_vol;
echo '||*** REAL VOL ' . $dc_real_vol . PHP_EOL;
echo '||*** SUM VOL ' . $dc_sum_vol . PHP_EOL;
if ($dc_real_vol !== $dc_sum_vol) {
var_dump($dc_real_vol);
var_dump($dc_sum_vol);
echo '||+++ THIS TRADE IS DAMAGE ' . PHP_EOL;
}
结果如下:
||*** REAL VOL 0.60533
||*** SUM VOL 0.60533
float(0.60533)
float(0.60533)
||+++ THIS TRADE IS DAMAGE
为什么相同的数字,相同的类型,但 PHP 仍然被识别为不同的东西?
【问题讨论】:
-
相关阅读过here
-
实数小数点后没有尾随零。因此,如果输出一个未格式化的“数字”给你
0.60533000,那么你没有一个实际的数字值开始,而是一个字符串。 -
“为什么 PHP 认为 0.60533000 与 0.60533 不同” -- 它们是数字还是字符串?
标签: php