搜尋

首頁  >  問答  >  主體

php - 在使用is_int函數時,當需要判定的數字超過了9位則傳回了false,是為什麼?

php 在使用is_int函數時,當需要判定的數字超過了9位則回傳了false,是為什麼?

大家讲道理大家讲道理2842 天前1082

全部回覆(2)我來回復

  • 滿天的星座

    滿天的星座2017-05-16 13:06:03

    。 。 。 。
    Integer 整型是有個範圍的,而這個範圍是跟平台版本有關的32位元(最大值為:2^31 - 1)與64位元(最大值為:2^63 - 1)的範圍不一致。這時候超出範圍的數字會被解釋為float型,所以is_int()函數判斷會是false,下面是64位的整數溢位:

    $large_number = 9223372036854775807;
    var_dump(is_int($large_number));                     // true
    
    $large_number = 9223372036854775808;
    var_dump(is_int($large_number));                    // false

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:06:03

    根據php官網手冊:

    整數數的字長和平台有關,儘管通常最大值是大約二十億(32 位元有符號)。 64 位元平台下的最大值通常是大約 9E18,除了 Windows 下 PHP 7 以前的版本,總是 32 位元的。 PHP 不支援無符號的 integer。 Integer 值的字長可以用常數PHP_INT_SIZE來表示,自PHP 4.4.0 和PHP 5.0.5後,最大值可以用常數PHP_INT_MAX 來表示,最小值可以在PHP 7.0.0 及以後的版本中用常數PHP_INT_MIN 表示最小值。

    所以對於32位的integer,有符號2^31=2147483648(約20億),是一個10位數,所以針對你說的情況,超過9位數會返回false是存在的.

    回覆
    0
  • 取消回覆