in_array在小数点后忽略000

时间:2011-06-23 05:07:39

标签: php

$arr = array(2.1,3.1);

if(in_array(2.1000,$arr))
   echo "yes";
else
   echo "no";

我希望它应该显示“否”,但它会忽略小数点后的0。

3 个答案:

答案 0 :(得分:4)

你可以做的是(string)$arr[0] == '2.1000'。唯一的问题是,当在PHP中使用浮点数时,它将“删除”前导零和尾随零,因此它们总是不会为零,除非您最初将它们存储为字符串或者如果您跟踪前导和尾随另一个数组中的零。

答案 1 :(得分:0)

2.1将始终等于2.1000,因为它们代表相同的值(它们只是表示不同,一旦PHP解析数字就会丢失)。您必须将至少一个值存储为字符串'2.1000'才能进行此类“表示比较”。

答案 2 :(得分:0)

数字2.1000的内部浮点表示与2.1完全相同,因此代码无法区分。

我们必须始终注意数值的内部表示与我们在代码中使用的表示或输出中的表示之间的区别。