加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:如何检查变量是否为“大整数”

发布时间:2020-12-13 16:41:17 所属栏目:PHP教程 来源:网络整理
导读:我需要检查参数(字符串或者int或者float)是否是一个“大”整数. “大整数”我的意思是它没有小数位,可以超过 PHP_INT_MAX.它被用作msec时间戳,内部表示为float. ctype_digit想到但强制字符串类型.作为辅助检查的is_int限制为PHP_INT_MAX范围,is_numeric将接
我需要检查参数(字符串或者int或者float)是否是一个“大”整数. “大整数”我的意思是它没有小数位,可以超过 PHP_INT_MAX.它被用作msec时间戳,内部表示为float.

ctype_digit想到但强制字符串类型.作为辅助检查的is_int限制为PHP_INT_MAX范围,is_numeric将接受带小数位的浮点,这是我不想要的.

依靠这样的东西是安全的,还是有更好的方法:

if (is_numeric($val) && $val == floor($val)) {
    return (double) $val;
}
else ...
所以基本上你想检查一个特定的变量是否是整数的?
function isInteger($var)
{
    if (is_int($var)) {
        // the most obvious test
        return true;
    } elseif (is_numeric($var)) {
        // cast to string first
        return ctype_digit((string)$var);
    }
    return false;
}

请注意,使用浮点变量来保持较大的整数将失去精度,并且当足够大时将变成一个分数,例如9.9999999999991E 36,这显然会失败上述测试.

如果给定环境(32位或64位)的值超过INT_MAX,我建议使用gmp,并以字符串格式持久保留数字.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读