为什么sqrt的输出在
PHP中不是“16”的整数?
例
PHP > $fig = 16; PHP > $sq = sqrt($fig); //should be 4 PHP > echo $sq; 4 PHP > echo is_int($sq); // should give 1,but gives false PHP >
我觉得问题出在内部表示中,PHP隐藏的内容与Python类似.
那么你怎么知道在取平方根后给定的数字是整数?
那么如何在不使用正则表达式的情况下区分PHP和4.12323?
根据PHP手册,float sqrt(float $arg),sqrt()总是返回一个浮点数.使用is_int()函数无法解决问题,因为它会检查数据类型并返回失败.
原文链接:https://www.f2er.com/php/137269.html为了解决这个问题,您可以使用模数来测试它:(对于浮点模数必须是fmod()而对于整数模数必须是%运算符)
if (fmod(sqrt(16),1) == 0) { // is an integer }
如果您使用的是PHP 5.2.0或更高版本,我相信这也可行,但我还没有在这种情况下使用它来确定:
$result = sqrt(16); if (filter_var($result,FILTER_VALIDATE_INT)) { // is an integer }