Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KMRodrigo

json_decode quebrando long

Recommended Posts

Boa tarde pessoal,

 

estou com um problema: recebo um json de uma api q retorna um número como: 28175938272847293 o retorno chega correto para mim porém quando uso o json_decode para converter o json o número se transforma em 2.817593827+8E1 e isso quebra meu sistema.

 

Sabem como posso usar o decode sem quebrar o número?

 

exemplo

{
"numberData" : {
      "number" : 14231452513116306
    }
}
usando o json decode fica
1.4231452513116E+16

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Não pesquisei direito, mas uma das opções é você converter para string com sprintf,

 

exemplo:

 

 

$json = '{
"numberData" : {
      "number" : 14231452513116306
    }
}';
$result = json_decode($json, true);
$number = sprintf('%.0f', $result['numberData']['number']);
var_dump($number);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é notação científica. Você pode alterar o valor da diretiva "precision", aumentando o valor, para que o número não seja transformado em notação científica.

 

O que você fará com esse número? Precisa realizar operações matemáticas? Se não precisar, pode converter para string, como sugerido pelo Anderson Danilo. Mas se precisar, existe o risco de overflow. Pra evitar isso, veja a biblioteca GMP, para cálculos com números de precisão arbitrária

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Anderson pela ajuda e muito obrigado Beraldo pela explicação

 

Não irei fazer nenhum operação matemática com ele a solução string correu bem!

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.