關於int型別表示的最大位數

2022-06-23 09:27:15 字數 791 閱讀 7146

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));

根據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是存在的.

用int型別表示最大公倍數

include include includeint main void sum m n a printf 最小公倍數 d n sum printf int型別的極限為 d n int max q int max sum printf 最大公倍數是 d n sum q return 0 最大公倍數好...

int型別的數值表示數的範圍

int為4個位元組 1位元組 8位,所以int為32位在計算機中儲存的二進位制位數。如果沒有符號位的話 就是32位 表示數的範圍為2的32次方 可以舉例數字就明白了 最大的整數為 2的32次方 1。就是這麼大 unsigned int 0 4294967295 如果有符號位的話,需要去除乙個符號位,...

Mybatis關於int型別欄位的判斷

出現問題 有乙個欄位waternum 為int型別,在更新語句時判斷不為null或空字串時,更新該欄位,問題在於,當waternum為0的時候,該字段不更新了 示例 waternum if 問題原因 mybatis在判斷int型別時,0認為是空字串,因為加了waternum 所以該判斷為false,...