Ir para conteúdo

POWERED BY:

Arquivado

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

rodrigo_cf

Transformar notação científica em Inteiro

Recommended Posts

Pessoal,

 

Isso já foi discutido no fórum do iMasters(PHP) porém não consegui encontrar uma solução ainda.

 

O meu problema é que tenho um script que recebe um arquivo em Excel (97/2003 - xls), lê, faz um cálculo e importa para o MySQL, porém alguns números vem como notação científica devido a quantidade de números e então eu não consigo fazer o cálculo, gerando um valor 0 (zero).

Preciso converter essa notação cientifica em inteiro para poder fazer o cálculo.

Alguém sabe se existe alguma classe prá isso ou um "jeitinho", porque até onde acompanhei as mensagens do fórum, o PHP não conseguia converter, possivelmente devido a uma deficiencia dele (PHP) ou da linguagem mãe ©.

Na época alguém contribuiu com uma dica, desculpe não me lembro qual o usuário para postar os créditos, mas descrevia uma POG passando a notação para o MySQL, porque ele era capaz de fazer a conversão.

Mas gostaria de fazer isso antes de enviar ao banco, alguém tem alguma sugestão???

 

Desde já agradeço pela atenção e ajuda.

 

Rodrigo César de Freitas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for passar pro mysql tem que usar o tipo como decimal ao invéz de int

http://stackoverflow...umbers-in-mysql

Funcionou aqui, o mysql converteu

converteu, 23e3 em 23000

 

Mas eu acho que talvez de para usar o explode numa string com notação cientifica "E" e converter os dois lados para número calcular, e concatenar, eu acho

 

 

Editei para evitar flood

 

 

Dava para fazer com o explode
<?php
function calcn($cientific){
$explode1 = explode( "E" ,$cientific);
$explode2 = explode( "+",$explode1[1]);
$num1= (int)$explode1[0];//converte $explode1[0] para inteiro
$num2= pow(10,(int)$explode2[0]);//calcula potencia
$num3=@$explode2[1];
return ($num1 *$num2 + $num3);
}
echo calcn("23E10+1111");//230000001111
echo "<BR>";
echo calcn("87E4");//870000
echo "<BR>";
echo calcn("87E4+.41");//870000.41
echo "<BR>";
echo calcn("81E4+.00077");//810000.00077
?>

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.