сохранить bigint в переменной php

Я написал функцию для добавления запятой к каждым 8 нулям моего числа

Мне нужно сохранить значение в переменной или массиве PHP, но оно сохраняется как "1.0E+30"

вот мой PHP-код:

function SplitHex($number) {
$number_split = str_split($number,1);
$number_split_revers = array_reverse($number_split);
$i = 0;
foreach ($number_split_revers as $key => $value ) {
    if ( $value == 0) {
        $i++;
        if ( $i == 8 ) {
        $number_split_revers[$key] = str_replace(0,",0",$value);
        $i=0;
        }
    }

}
    $final = '';
    $number_final = array_reverse($number_split_revers);
    foreach ($number_final as $value ) {
        $final .= $value;   
    }

//$final = strval(implode("",$number_final));

return $final;

и я вызываю функцию:

$test[2] = SplitHex(1000000000000000000000000000000);
var_dump ($test);
print_r ($test);

выходные данные echo print_r var_dump одинаковы:

1.0E+30

но это должно быть 1000000,00000000,00000000,00000000

Я много искал, но не мог найти правильного решения для этой проблемы


person user3325376    schedule 21.02.2017    source источник
comment
вам может понадобиться взглянуть на этот stackoverflow.com/questions/8647125/using-long-int -в php   -  person hassan    schedule 21.02.2017
comment
См. stackoverflow.com/questions/ 4427020/   -  person Nerea    schedule 21.02.2017


Ответы (1)


К вашему сведению,

если число слишком длинное, оно не может вписаться в 32 целочисленный формат в php, поэтому оно сохраняется в формате с плавающей запятой.

Таким образом, вы не можете увидеть это целочисленное значение, если оно превышает размер PHP_INT_MAX.

Но это альтернатива этому,

$test[2] = number_format(SplitHex(1000000000000000000000000000000),0,null,'');
var_dump ($test);
print_r ($test);

Попробуйте, должно сработать.

person Rahul    schedule 21.02.2017
comment
это не работает, вывод 1000000000000000019884624838656, но должен быть 1000000,00000000,00000000,00000000 - person user3325376; 21.02.2017