Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Formatar numero


Eder

Pergunta

Ola..estou usando este codigo abaixo...eu precisaria formatar o campo tipo assim:

esta saindo assim o resultado:

12.538652522

deveria sair assim:

12.54

<script language=JavaScript>
<!--
function CalcTotals() {
var p1_Float  = parseFloat(document.Form1.p1.value);
var q1_Float  = parseFloat(document.Form1.q1.value);
var Total = 0;
document.Form1.SubTotal1.value = (p1_Float*q1_Float);
}
</SCRIPT>

muito Grato

Editado por Eder
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Ola..Jonathan...

fiz assim partindo da tua idéia:

var totsicms = (subtot1+subtot2+ subtot3+subtot4);  
rtoticms = parseInt(totsicms*100)/100;
document.Form1.Total.value = (rtoticms);

funciona certinho....ele formata assim co duas casas decimais:

13.65

mas eu lhe pergunto...

como o resultado anterior daria no total 13.649999 e ai ele arredondou para 13.65

mas no caso de dar um resultado assim: 13

ele não põe as casa decimais tipo assim: 13.00 fica só o 13

:blush:

dentro daquele exemplo acima..teria como adaptar também .....ai ficaria beleza....

hoje ta saindo assim:

13.65

13

14.75

note que fica feio assim..

seria legal ficar assim:

13.65

13.00

14.75

muito Grato

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
mas eu lhe pergunto...

como o resultado anterior daria no total 13.649999 e ai ele arredondou para 13.65

Se não me engano existe uma função nativa do JavaScript para isso, mas não lembro agora...Então postarei um código que mostra como se fazer isso

function Arredonda(numero,casas){
if (numero-parseInt(numero)>0.5){
//O valor decimal é maior que 0.5 (sendo assim, aproxima para um inteiro com "x" casas decimais e soma 1
numero=1
}else{
numero=0
}
numero+=parseInt(numero*10^casas)/10^casas
}
Observe como a função funciona... Se a parte decimal do valor for maior que "0.5" ele atribui o valor à variável "numero" como 1 Caso contrário, será 0 ! Depois, soma-se a variável "numero" o valor aproximado com a quantidade de casas decimais !
mas no caso de dar um resultado assim: 13 ele não põe as casa decimais tipo assim: 13.00 fica só o 13
Para fazer isso você pode transformar a variável "numero" em uma string ! Ficaria mais ou menos assim:
if (numero==parseInt(numero)){
//Não há casas decimais
numero+=".00"
}

Qualquer coisa posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

Jonathan....agora me perdi...não entendo quase nada de Javascript...

pergunto:

seria possivel você montar um código prontinho digamos 3 input´s somando o input1+input2=input3?

porque ai eu visualizaria como você fez o exemplo e adaptaria a minha necessidade... :blush:

muito Grato

Link para o comentário
Compartilhar em outros sites

  • 0

Recomendo que comece a estudar pelo menos o "básico" de JavaScript !

É uma linguagem fácil de se aprender e lhe ajudará muito na programação Web !

Olhe este tópico também: http://scriptbrasil.com.br/forum/index.php?showtopic=131769

Código completo (se não conseguir entender algo posta aí):

function Arredonda(numero,casas){
if (numero-parseInt(numero)>0.5){
//O valor decimal é maior que 0.5 (sendo assim, aproxima para um inteiro com "x" casas decimais e soma 1
numero=1
}else{
numero=0
}
numero+=parseInt(numero*10^casas)/10^casas
}

function CalcTotals() {
var p1_Float  = parseFloat(document.Form1.p1.value);
var q1_Float  = parseFloat(document.Form1.q1.value);
var Total = 0;
var resultado=p1_Float*q1_Float
resultado = Arredonda(resultado, 2)
document.Form1.SubTotal1.value = resultado;
if (parseInt(resultado)==resultado){
document.Form1.SubTotal1.value+=".00"
}
}

Não cheguei a testar o código, mas deve funcionar !

Qualquer dúvida posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo.....teste e não deu certo....não sei se fiz correto. :blush:

segue o codigo completo:

<HTML><HEAD>

<script language=JavaScript>
<!--
function Arredonda(numero,casas){
if (numero-parseInt(numero)>0.5){
//O valor decimal é maior que 0.5 (sendo assim, aproxima para um inteiro com "x" casas decimais e soma 1
numero=1
}else{
numero=0
}
numero+=parseInt(numero*10^casas)/10^casas
}
function CalcTotals() {
var p1_Float  = parseFloat(document.Form1.p1.value);
var q1_Float  = parseFloat(document.Form1.q1.value);
var Total = 0;
var resultado=p1_Float*q1_Float
resultado = Arredonda(resultado, 2)
document.Form1.SubTotal1.value = resultado;
if (parseInt(resultado)==resultado){
document.Form1.SubTotal1.value+=".00"
}
}
</SCRIPT>
</HEAD>
<BODY bgColor=#ffffff><FORM name=Form1>
<TABLE width="829" align="center">
  <TR>
	<TD vAlign="middle" align=middle width="105" bgcolor="#000099" style="border-width:1px; border-style:solid;">
				<p align="right"><font color="white"><b>Frete Peso:</b></font></TD>
	<TD align=middle width="176" style="border-width:1px; border-style:solid;">
				<p align="right"><INPUT onfocus="this.value=''" name="p1" size="8" style="text-align:right;"></TD>
	<TD align=middle width="245" style="border-width:1px; border-style:solid;">
				<p align="right"><INPUT onfocus="this.value=''" name="q1" size="8" style="text-align:right;"></TD>
	<TD align=right width="277" style="border-width:1px; border-style:solid;">:<INPUT name=SubTotal1 style="text-align:right;" size="8"></TD></TR>
  <TR>
	<TD vAlign=top align=middle colSpan="4" width="823"></TD></TR>
<TR>
	<TD vAlign=top align=middle width="107">
				<p align="right">&nbsp;</TD>
	<TD align=middle width="178">				<p align="left">&nbsp;</p>
</TD>
	<TD align=middle width="247"></TD>
	<TD align=right width="277" style="border-width:1px; border-style:solid;"><INPUT onclick=CalcTotals() type=button value="Calcular" name=Button1 style="font-weight:bold; color:navy; background-color:rgb(232,246,246); border-width:1px; border-style:solid;"> 
	</TD></TR></TBODY></TABLE></FORM>
<p>&nbsp;</p>
</BODY></HTML>

Grato

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, tinha comentido várioas erros "básicos" (esqueci de retornar um valor na função, etc., etc.)

Eis o código com as alterações:

function Arredonda(numero,casas){
numero2=0
if (numero-parseInt(numero)>0.5){
//O valor decimal é maior que 0.5 (sendo assim, aproxima para um inteiro com "x" casas decimais e soma 1
numero2=1
}else{
numero2=0
}
numero2+=parseInt(numero*(10^casas))/(10^casas)
return numero2
}
function CalcTotals() {
var p1_Float  = parseFloat(document.Form1.p1.value);
var q1_Float  = parseFloat(document.Form1.q1.value);
var resultado=p1_Float*q1_Float
resultado = Arredonda(resultado, 2)
if (parseInt(resultado)==resultado){
resultado+=".00"
}
document.Form1.SubTotal1.value = resultado;
}

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente...

Mas nem vai precisar corrigir aquele script !

Lembrei o nome da função (round(), pertencente ao objeto Math)

Seu código ficaria assim:

function CalcTotals() {
var p1_Float  = parseFloat(document.Form1.p1.value);
var q1_Float  = parseFloat(document.Form1.q1.value);
var resultado=p1_Float*q1_Float
resultado = Math.round(resultado*100)/100
if (parseInt(resultado)==resultado){
resultado+=".00"
}else if(parseInt(resultado*10)/10==resultado){
resultado+="0"
}
document.Form1.SubTotal1.value = resultado;
}

Edit:

Vou editar a função para que já fique funcionando perfeitamente (com a correção que você postou)

Link para o comentário
Compartilhar em outros sites

  • 0

valeu..Jonathan...até que quase deu certo 100% exceto pelo seguinte calculo:

quando o resultado for 27.50 ele não põe 27.50 e sim 27.5.0

que pena...somente por este detalhe...

acredito que seja o IF não deve estar fechando com esta condição né?

pelo que entendi o resultado é 27.5 e ai ele acrescente o .0 - distorcendo o resultado.

tens ideia de como contornar esta situação?

Muito Grato.

Abraço

Editado por Eder
Link para o comentário
Compartilhar em outros sites

  • 0
valeu..Jonathan...até que quase deu certo 100% exceto pelo seguinte calculo:

quando o resultado for 27.50 ele não põe 27.50 e sim 27.5.0

que pena...somente por este detalhe...

acredito que seja o IF não deve estar fechando com esta condição né?

pelo que entendi o resultado é 27.5 e ai ele acrescente o .0 - distorcendo o resultado.

R.: perdão Jonathan....é fácil este situação ...nem me toquei...era só alterar o codigo:

resultado+=".0"
Para este:
resultado+="0"

ai deu certo...

Carinha...valeu..a força, muito grato pela ajuda...

Grande Abraço

:)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...