Foros del Web » Programando para Internet » Javascript »

Problema con PrseFloat

Estas en el tema de Problema con PrseFloat en el foro de Javascript en Foros del Web. Hola chic@s Tengo un script que calcula precios, no lo pongo todo porque es demasiado extenso, pero el problema es el siguiente: Mediante ASP genero ...
  #1 (permalink)  
Antiguo 02/12/2003, 12:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Problema con PrseFloat

Hola chic@s

Tengo un script que calcula precios, no lo pongo todo porque es demasiado extenso, pero el problema es el siguiente:

Mediante ASP genero un formulario y en unos textbox imprimo el resultado de cierta variable de esta forma

<input type=text name=precio value=<%=formatNumber(variable,2)%> readonly>

El resultado de dicha instrucción sería que me apareciera un text con un precio formateado con las siguientes características:

<input type=text name=precio value="2,500.00" readonly>

Esto lo hace bien, el problema viene al sumar o restar valores con los tipos de datos de javascript, lo convierto a flotante así:

variable= parseFloat(document.forma.precio.value)

Ahora al querer sumar un valor, me toma únicamente el o los dígitos que se encuentran antes de la primera "," en este caso me tomaría unícamente un 2, de manera que me hecha a perder todo el procedimiento...esto obviamente solo sucede con los miles y hacia arriba, es decir que solo sucede cuando hay una coma de por medio...

Obviamente necesito mostrar con formato las cantidades.

Como puedo solucionar este problema?

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #2 (permalink)  
Antiguo 02/12/2003, 14:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
'nas...


pues no sé yo si habrá una forma más simple de hacerlo, pero la única que me ha funcionado es convirtiéndolo a number, sumarlo, convertirlo a string, darle de nuevo el formato y devolverlo.

Te dejo el ejemplo que con el que he estado jugando a ver si te sirve


<script language="JavaScript">
function pepe(cual){
perico1 = new Number(cual.pepe1.value.replace(/\,/,""))
perico2 = new Number(cual.pepe2.value.replace(/\,/,""))
perico3 = perico1 + perico2
lar = perico3.toString().substring(0,(perico3.toString() .indexOf('\.')-1)).length
var numerillos = ""
for(m=lar; m>=0;m--){
numerillos += perico3.toString().charAt(m)
if((m%3) ==0 && m > 0){
numerillos += ","
}
}
numerillos +=perico3.toString().substr(perico3.toString().ind exOf('\.'))
cual.valorFinal.value = numerillos
}
</script>
</head>

<body>
<form name="form1" method="post" action="">
<p>
<input name="pepe1" type="text" value="2,500.00">
<input name="pepe2" type="text" value="12.8">
<input type="button" name="Submit" value="Bot&oacute;n" onClick="pepe(this.form)">
</p>
<p>
<input type="text" name="valorFinal">
</p>
</form>

yá me contarás...
  #3 (permalink)  
Antiguo 02/12/2003, 16:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Gracias Tunait, lo voy a probar y te aviso...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 02/12/2003, 16:26
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
calla calla que revisando acabo de darme cuenta de que se está montando la cadena al revés.... es que ando algo espesa hoy

estoy revisándolo, yá te digo algo....
  #5 (permalink)  
Antiguo 02/12/2003, 16:46
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
fale, creo que ahora yá va ok

<script language="JavaScript">
function pepe(cual){
perico1 = new Number(cual.pepe1.value.replace(/\,/,""))
perico2 = new Number(cual.pepe2.value.replace(/\,/,""))
perico3 = perico1 + perico2
lar = perico3.toString().substring(0,(perico3.toString() .indexOf('\.')-1)).length
alert(perico3.toString().substring(0,(perico3.toSt ring().indexOf('\.'))))
var numerillos = "", cont = 1
for(m=lar; m>=0;m--){

numerillos = perico3.toString().charAt(m) + numerillos
if((cont%3) ==0 && m < lar){
numerillos = "," + numerillos
}
cont++
}
numerillos +=perico3.toString().substr(perico3.toString().ind exOf('\.'))
cual.valorFinal.value = numerillos
}
</script>

Yá me contarás
  #6 (permalink)  
Antiguo 02/12/2003, 17:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Funcionó perfecto...


GRACIAS!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:01.