PHP: преобразование целочисленного числа 64 бит в строку

Я пытаюсь использовать твердокодированное целое число 64 бит в строковой переменной.

Simplfied Я хочу сделать что-то вроде этого:

$i = 76561197961384956; $s = "i = $i"; 

Это должно привести к тому, что:

 i = 76561197961384956 

Это, очевидно, не работает, поскольку PHP отличает большие числа для float, поэтому s :

 i = 7.65611979614E+16 

В то время как некоторые другие методы, такие как литье и т. Д., number_format() неудачу, я нашел number_format() и использовал его следующим образом:

 $s = "i = " . number_format($i, 0, '.', ''); 

Но это приводит к тому, что:

 i = 76561197961384960 

Похож на проблему аппроксимации, но как это исправить?

    Вы теряете точность в задании, а не в преобразовании строки. Если значение этой переменной действительно жестко закодировано, и вы не можете изменить это, вы ничего не можете сделать.

    Строка вроде:

     $i = 76561197961384956; 

    всегда будет терять точность. Если вам нужно сохранить все это, сохраните его в строке, вы не сможете сохранить его как int и сохранить все цифры.

    Я думаю, что единственный способ – использовать функции bcmath .

    Для произвольной математики точности PHP предлагает Binary Calculator, который поддерживает числа любого размера и точности, представленные в виде строк.

    Это ваш $i , это неправильно, а не преобразование строк. PHP использует 32-битные int внутри.

    на данный момент только способ сделать большую целую математику в php – использовать расширения bcmath или gmp, которые обрабатывают большие числа как строки. 64-битные целые числа строятся на php6.

    поэтому при использовании больших целых чисел их отличить от строки или вы потеряете точность при назначении (автоматический прилив для float), а затем используйте в строковых математических библиотеках для дальнейшей обработки вашего номера.

    Вы пытались использовать функцию intval () PHP?