Ir para conteúdo

POWERED BY:

Arquivado

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

The Key

[Resolvido] Formatação de numero com ponto

Recommended Posts

Olá gente amiga, Estou com a seguinte dificuldade: tenho 1 form q recebe valores refentes a quantias monetarias.E o usuario pode inserir valores com ponto, virgula e sem nadaE tenho 1 fcn para receber c/ a virgula, por ex: 525,35. Minha FCN retira a virgula e põe 1 pto no lugar, ficando: 525.35.Caso o usuario entre usando pto (ex: 42.10) ele não faz nada.Mas estou c/ 1 problema na possibilidade do usuario digitar 1.000, querendo enviar o valor MIL e o sistema entende como 1.Como posso solucionar isso. já as funções STR do PHP não agem sobre numeros.Agredeço desde já, The Key

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, essa é a fcn q estou usando atualmente, mas ela não preve o 1.000 (como MIL) e sim como 1.00 (UM):// FCN PARA FORMATAR O NUMERO - TRANSFORMA-LO EM (0000.00)function FormatNumber ($value){if (!is_numeric ($value)){ if (substr_count ($value, ",") >= 1){ $outPoint = str_replace (".", "", $value); $newValue = str_replace (",", ".", $outPoint); return $newValue; }else { return $value; }}else { return $value;}}// END - FCNJá tentei varias formulas usando as funções strlen, str_replace, etc...pois elas não agem sobre numeros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso assim:

$valor=str_replace(",", ".", (str_replace(".", "", $_POST['valor'])));

Primeiro tira o ponto (se houver) e substitui por nada. Depois tira a vírgula e substitui por um ponto. Crédito ao professor Adaiton.

 

Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros, agradeço as dicas ate o momento, mas o q acontece é o seguinte:str_replace, eu já uso...mas não é isso q eu preciso.sobre o number_format, não resolve meu caso.ainda aguardando a solução prometida (risos).

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá tmferreira, esse complemento de fcn já havia pensado, e no caso de 1.000 (ficaria 1000 - mil tb) resolveria.mas no caso do usuario ter digitado 1.00 (para UM) ficaria 100 (CEM), ou seja, "alterando" os valores.c os nºs tivessem o mesmo comportamento de strings nas fcns str (ex's: str_replace, strlen, etc) conseguiria tratar a posição do pto e dos zeros restantes e etc. mas...mas ainda assim agradeço a atenção e continuo esperando + ajudas.PS: caso descubra o modo de tratar essa situação, postarei aqui tb!abraços, The Key :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae, gente? Não tem ninguem mesmo q podia me enviar 1 luz (risos)?Grato. Abraços.

Olha só... Eu uso isso exatamente da maneira que você falou e funciona da forma como eu te mostrei acima. Foi inclusive um exemplo que o Adailton, moderador, postou aqui. Se não funcionar aí é porque tem alguma outra coisa errada no seu código. Sugiro que você retire a função que mencionou lá em cima e use apenas o que tem passei. Revise tudo... Se não tiver jeito, mostre o código que alguém vai te ajudar a fazer funcionar. Você usa o que eu postei antes pra poder armazenar no banco. Pra mostrar na tela você vai usar assim:
$valor=number_format($valor_desp, 2, ',', '.');
Abs,

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae, gente? Não tem ninguem mesmo q podia me enviar 1 luz (risos)?Grato. Abraços.

Olha só... Eu uso isso exatamente da maneira que você falou e funciona da forma como eu te mostrei acima. Foi inclusive um exemplo que o Adailton, moderador, postou aqui. Se não funcionar aí é porque tem alguma outra coisa errada no seu código. Sugiro que você retire a função que mencionou lá em cima e use apenas o que tem passei. Revise tudo... Se não tiver jeito, mostre o código que alguém vai te ajudar a fazer funcionar. Você usa o que eu postei antes pra poder armazenar no banco. Pra mostrar na tela você vai usar assim:
$valor=number_format($valor_desp, 2, ',', '.');
Abs,
Não há nada de errado c/ o meu código, ele apenas não disponibiliza a fcn de entender o pto e virgula.Pode ver q nenhuma das respostas acima engloba a solução pedida.REPETINDO: tenho 1 valor numerico q provem de 1 form onde o usuario pode digitar tanto a casa decimal tanto c/ o separador pto ou virgula.Por tanto, preciso de q fcn entenda qdo nº tiver pto seprando decimal (ex: 1.25) e qdo for separando milhar (ex: 1.250).grato por todas as tentativas ate agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há nada de errado c/ o meu código, ele apenas não disponibiliza a fcn de entender o pto e virgula.Pode ver q nenhuma das respostas acima engloba a solução pedida.REPETINDO: tenho 1 valor numerico q provem de 1 form onde o usuario pode digitar tanto a casa decimal tanto c/ o separador pto ou virgula.Por tanto, preciso de q fcn entenda qdo nº tiver pto seprando decimal (ex: 1.25) e qdo for separando milhar (ex: 1.250).grato por todas as tentativas ate agora.

Que pena que você não tentou... Lamento então não poder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se isso resolve:

 

<?function FormatNumber($valor){	$valor = trim($valor);	$valor = str_split($valor);		$i = count($valor) - 3;	if($valor[$i] == ","){		$valor[$i] = ".";	}		foreach($valor as $c => $v){		if($valor[$c] == "." && $c != $i){			unset($valor[$c]);		}	}		$valor = implode("", $valor);	return $valor;}$v1 = "1.234,56";echo $v1. " => " .FormatNumber($v1);echo "<br>";$v2 = "1.234.00";echo $v2. " => " .FormatNumber($v2);echo "<br>";$v3 = "1.000";echo $v3. " => " .FormatNumber($v3);echo "<br>";$v4 = "1000";echo $v4. " => " .FormatNumber($v4);echo "<br>";$v5 = "1.00";echo $v5. " => " .FormatNumber($v5);echo "<br>";$v6 = "100";echo $v6. " => " .FormatNumber($v6);echo "<br>";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso assim:

$valor=str_replace(",", ".", (str_replace(".", "", $_POST['valor'])));

Primeiro tira o ponto (se houver) e substitui por nada. Depois tira a vírgula e substitui por um ponto. Crédito ao professor Adaiton.

 

Abs,

 

 

Eu estava com o mesmo problema, e pra mim funcionou perfeitamente. Obrigado Asanoli.

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.