Php “两个数字”;“回声”;同样的,但是!=这是真的吗?

Php “两个数字”;“回声”;同样的,但是!=这是真的吗?,php,Php,我必须比较两个数字。。在某些情况下,即使它们相等,if语句也会返回false $next_accum = $curr_amount + $csv_arr[$i]['amount']; var_dump($next_accum); echo ' '; var_dump($csv_arr[$i]['accum_amount']); if($next_accum != $csv_arr[$i]['accum_amount']) echo ' _err'; echo '<br>'; 尝试:

我必须比较两个数字。。在某些情况下,即使它们相等,if语句也会返回false

$next_accum = $curr_amount + $csv_arr[$i]['amount'];
var_dump($next_accum);
echo ' ';
var_dump($csv_arr[$i]['accum_amount']);
if($next_accum != $csv_arr[$i]['accum_amount']) echo ' _err';
echo '<br>';
尝试:


您可以将它们四舍五入、强制转换为整数、使用intval()或concat将它们转换为字符串。当谈到精度时,浮点可能会引起问题,因为它如何表示内存将进入不精确的浮点数学世界!如果不能将其转换为int,可以这样检查精度:if(abs($float1-$float2)>0.001)echo'错误;我编辑了我的问题。。即使两个都是intaarh,它仍然返回false。。现在它们不相等了:我想你的意思是
(int)
而不是
int()
,而且额外的参数是不必要的,如果((int)$next\u acum!=(int)$csv\u arr[$i]['acum\u amount']),你就可以做
。固定的。tx.打算建议使用intval(),但是(int)在这种情况下应该可以工作,而且速度会快一点。参数只是为了清楚起见,是的,是可选的。如果将变量转换为int,则不起作用。。然后,一些值以奇怪的方式四舍五入。。您需要将这些值转换为stringsok。不清楚您是否打算将这些值作为浮点值,因为在PHP中不能对浮点值使用常规比较。
int(892474) int(892474)
int(866374) int(866374)
int(741374) int(741374)
int(685124) int(685124)
int(570749) int(570749)
int(520749) int(520749)
int(510819) int(510818) _err
int(474062) int(474063) _err
int(461678) int(461678) 
if(((int)$next_accum) != ((int)$csv_arr[$i]['accum_amount'])) echo ' error';