Ir para conteúdo

POWERED BY:

Arquivado

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

Cantorum

[Resolvido] Passar de string para número

Recommended Posts

Alguém lembra como fazer para converter:

 

000000000000010000

 

em

 

100,00

 

?

 

Se eu usar o number_format me retorna: 10.000,00.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que o número acima não é binario mas está como string e preciso mudar para float considerando os dois últimos algarismos como decimais.

 

000000000000010000

 

em

 

100,00

 

se eu simplesmente mudar o campo da tabela para float ele me retorna 10.000.00.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe relação numérica, se você converter pra inteiro vai dar 10000 mesmo. Você pode fazer uma gambiarra, dividindo por 10 e formatando as casas decimais com number_format.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for urgente a solucao use o format e divida por 100

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for urgente a solucao use o format e divida por 100

Mário,

Eu usei o número acima apenas como exemplo. Os valore são os mais variados possíveis e não daría para simplesmente dividir por 100.

 

Fiz uma função que resolveu meu problema e coloco-a aqui como contribuição:

 

function valor($x){
	
	$x = ltrim( $x, "0" );//APAGA OS ZEROS DA ESQUERDA
	
	$tamanho = strlen($x); //PEGA O NÚMERO DE CARACTERES DA STRING
	
	$tamanho = $tamanho - 2; //RETIRO OS 2 ZEROS DA CASA DECIMAL
	
	$valor = substr($x, 0, $tamanho); //SELECIONO O VALOR SEM A CASA DECIMAL
	
	$valor = number_format($valor, 2, ",", "." );
	
	return $valor;
}
echo valor('0000000020000');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pababens pela resolucao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Tive esse problema um dia desses quando tive que extrair valores numéricos dum arquivo CNAB400. Os valores estão como string e com zeros a esquerda. Bem vou mostrar a minha solução que é bem parecida com a do Cantorum, sendo que, no meu caso, a string toda é um float com duas casas decimais.

 

function str_to_float( $str_num ){
	$str = ltrim( $str_num, "0" );
	$dec = substr( $str, -2 ); // Caso necessite mais que duas casas decimais, ponha aqui
	$int = substr( $str, 0, -2 ); // A parte inteira. Se aumentar em $dec, aumente aqui também
	$flt = $int . "." . $dec;
	
	return $flt; // Retorna a string '64984.98'. Mas caso queira formatar para '64.984,98',
				 // use return number_format( $flt, 2, ",", "." ). Caso queira mudar o tipo 
				 // para float, use return (float) $flt. Na maioria dos casos você não precisa mudar
				 // o tipo, já que o PHP faz isso automaticamente.
}

echo str_to_float( '000000006498498' );

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.