运行以下内容,我希望收到N, Y, Y
。
我理解为什么我不是,因为'0.00' != '0'
代表第二个例子,但是有一种一致的方法来测试0
而不回滚到float / double,并且没有删除{ {1}}到===
。
==
备注
为什么我不放弃
echo bcmul( '5.1', '2.234', 2 ); echo bcmul( '5.1', '2.234', 2 ) === '0' ? ' Y ' : ' N '; echo "<br/>"; echo bcmul( '0.00', '000.00', 2 ); echo bcmul( '0.00', '000.00', 2 ) === '0' ? ' Y ' : ' N '; echo "<br/>"; echo bcmul( '0', '0', 2 ); echo bcmul( '0', '0', 2 ) === '0' ? ' Y ' : ' N '; echo "<br/>";
?
如果我通过诸如===
之类的方法提供功能作为更宏大的项目的一部分,我不认为其他开发人员必须放弃严格的比较,当他们是期望函数将数值作为字符串返回。
答案 0 :(得分:2)
一个。是0.00 !== 0
有效,因为它们的类型不同
var_dump(0.00,0);
输出
float 0
int 0
B中。 0 !== "0"
有效,因为它们的类型不同
var_dump(0,"0");
输出
int 0
string '0' (length=1)
℃。为什么我不想放弃===
var_dump("hello" == 0 ); true
var_dump("hello" === 0 ); false
$ a === $ b如果$ a等于$ b,则为TRUE,且它们属于同一类型。
我想这就是你想要的
echo (int) bcmul('0.00', '000.00', 2) === (int) '0' ? ' Y ' : ' N ';
^ ^
答案 1 :(得分:0)
您可以尝试使用ctype_digit()来确定返回的字符串是否包含“clean”int,或者它是否包含某个浮点点,然后只有两组Y / N函数;一个用于字符串整数,一个用于字符串浮点数。