Foros del Web » Programando para Internet » Javascript »

duda de poner decimales en javascript

Estas en el tema de duda de poner decimales en javascript en el foro de Javascript en Foros del Web. hola pido ayuda con esta funcion en php para pasarla a javscript me urge mucho. function ponerdecimales(numero) { if(strrpos(numero,".") === false ) numero .= ".00"; ...
  #1 (permalink)  
Antiguo 05/09/2008, 10:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
duda de poner decimales en javascript

hola pido ayuda con esta funcion en php para pasarla a javscript me urge mucho.


function ponerdecimales(numero)
{
if(strrpos(numero,".") === false ) numero .= ".00";
else if(strrpos(numero,".") == (string(numero) - 2) ) numero .= "0";
return numero;
}

necesito pasarla a javascript quien podria ayudarme soy novata en esto.
gracias
  #2 (permalink)  
Antiguo 05/09/2008, 10:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: duda de poner decimales en javascript

¿Qué es precisamente lo que hace la función?

Entiendo que quieres agregar decimales, pero esta comparación no acabo de entender qué es lo que pretendes con ella:
Código PHP:
if(strrpos(numero,".") == (string(numero) - 2) ) 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 05/09/2008 a las 11:04
  #3 (permalink)  
Antiguo 05/09/2008, 11:11
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: duda de poner decimales en javascript

Creo que a lo que se refiere es a la longitud de la cadena "numero"
else if ( "posicion del punto en la cadena" == "longitud de la cadena - 2")
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #4 (permalink)  
Antiguo 05/09/2008, 11:15
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: duda de poner decimales en javascript

No se si sea necesario que conviertas tu fincion, si no aqui te dejo uno de nuestros codigos para esta finalidad

function formatCurrency(num)
{
// Se limpia la cadena
num = num.toString().replace(/$|,/g,'');
//validamos que se numero
if(isNaN(num))
num = "0";
// se busca signo (pues hay perdidas osea dinero negativo
sign = (num == (num = Math.abs(num)));
//los centavos se hacen enteros y se redondea hacia arriba
num = Math.floor(num*100+0.50000000001);
// modulo 100 para ver cuantos centavos son
cents = num%100;
//se regresa a enteros
num = Math.floor(num/100).toString();
// se da formato
if(cents<10)
cents = "0" + cents;
//se ponen las comas cada 3 posiciones
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
//se estructura la cadena que regresa incluye signo de negativo, signo de pesos, entero, punto, centavos
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

Edit: Perdona olvide comentarizarla
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810

Última edición por Avatar810; 05/09/2008 a las 11:21
  #5 (permalink)  
Antiguo 05/09/2008, 11:48
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

Cita:
Iniciado por David el Grande Ver Mensaje
¿Qué es precisamente lo que hace la función?

Entiendo que quieres agregar decimales, pero esta comparación no acabo de entender qué es lo que pretendes con ella:
Código PHP:
if(strrpos(numero,".") == (string(numero) - 2) ) 

no entiendo muy bien pero creo que es para decirle que cuente la posicion hasta donde esta el punto y que a partir de ahi si hay un numero que le añada un cero y no hay numero que le añada dos.
es que os cuento este codigo lo ha echo otro chaval que esta trabajando conmigo y yo no lo entiendo muy bien pero me pide que lo pase a javascript

a ver si me podeis ayudar por fa.
gracias
  #6 (permalink)  
Antiguo 05/09/2008, 11:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: duda de poner decimales en javascript

Cita:
Iniciado por Avatar810 Ver Mensaje
Creo que a lo que se refiere es a la longitud de la cadena "numero"
else if ( "posicion del punto en la cadena" == "longitud de la cadena - 2")
Exacto, eso lo había entendido, es que lo que no entendía al principio es para qué agregar un cero si la posición era igual a 2 decimales, pero mirando mejor, si es longitud - 2 realmente faltaría un 0, por lo que al fin entendí .

En Javascript sería más o menos así:
Código PHP:
function ponerdecimales(numero)
{
if(
numero.indexOf(".")==-1)  { numero += ".00" } else {
   if(
numero.indexOf(".") == numero.length 2) { numero += "0" }
}
return 
numero;

__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 05/09/2008, 12:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

Cita:
Iniciado por David el Grande Ver Mensaje
Exacto, eso lo había entendido, es que lo que no entendía al principio es para qué agregar un cero si la posición era igual a 2 decimales, pero mirando mejor, si es longitud - 2 realmente faltaría un 0, por lo que al fin entendí .

En Javascript sería más o menos así:
Código PHP:
function ponerdecimales(numero)
{
if(
numero.indexOf(".")==-1)  { numero += ".00" } else {
   if(
numero.indexOf(".") == numero.length 2) { numero += "0" }
}
return 
numero;



ai que pena contigo pero me da un error no se porque me dice que se esperaba un objeto
mira aqui te enseño lo que estoy haciendo para que lo entiendas mejor.

<script language="javascript" type="text/javascript">

function calcularsubtotal()
{
var subtotal=0;



subtotal+= document.getElementById ("terminal1").value * 3940;
subtotal+= document.getElementById ("terminal2").value * 4650;
subtotal+= document.getElementById ("totem").value * 250;
subtotal+= document.getElementById ("rotulo").value * 250;
subtotal+= document.getElementById ("billetero").value * 410;
subtotal+= document.getElementById ("lector").value * 175;
subtotal+= document.getElementById ("puestam").value * 150;

var iva= subtotal * 16/100;
var total= subtotal + iva;



document.getElementById ("subtotal").innerHTML=subtotal;
document.getElementById ("iva").innerHTML=iva;
document.getElementById ("total").innerHTML=total;



var euro= "€";

document.getElementById ("t1").innerHTML= ponerdecimales(document.getElementById ("terminal1").value * 3940 ) + euro;
document.getElementById ("t2").innerHTML=ponerdecimales(document.getElemen tById ("terminal2").value * 4650) + euro;
document.getElementById ("tot").innerHTML=ponerdecimales(document.getEleme ntById ("totem").value * 250 + euro;
document.getElementById("rotu").innerHTML=ponerdec imales(document.getElementById ("rotulo").value * 250 + euro;
document.getElementById ("bille").innerHTML=ponerdecimales(document.getEle mentById ("billetero").value * 410 + euro;
document.getElementById ("lect").innerHTML=ponerdecimales(document.getElem entById ("lector").value * 175 + euro;
document.getElementById ("puest").innerHTML=ponerdecimales(document.getEle mentById ("puestam").value * 150 + euro;

}

aqui tambien te dejo una de las lineas del formulario

<td><input type="text" id="terminal1" name="terminal1" size="5" value="0" onChange="if (this.value!='') {calcularsubtotal();}">

a ver que me dice porque esta funcion me tiene mareada

si no gracias por todo ehh!!!






function ponerdecimales(numero)
{
if(numero.indexOf(".")==-1) { numero += ".00" } else {
if(numero.indexOf(".") == numero.length - 2) { numero += "0" }
}
return numero;
}


</script>
  #8 (permalink)  
Antiguo 05/09/2008, 12:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: duda de poner decimales en javascript

Primero debes hacer una conversión de tipos, ya que la función ponerdecimales recibe un String, mientras que le estás enviando un número.

Aunque el error que se produce es diferente, por lo que también desbes comprobar que esos id existen en tu documento.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 05/09/2008, 12:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

los id si existen pero lo de la conversion de tipos que significa como se hacen y como que reciben un string no lo entiendo mucho
gracias
  #10 (permalink)  
Antiguo 05/09/2008, 12:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: duda de poner decimales en javascript

Cambia la función ponerdecimales por esta:
Código PHP:
function ponerdecimales(numero)
{
numero String(numero); //Aquí convertimos a String el parámetro
if(numero.indexOf(".")==-1)  { numero += ".00" } else {
   if(
numero.indexOf(".") == numero.length 2) { numero += "0" }
}
return 
numero;

Aunque como te dije, creo que no es precisamente la función el problema, hay otro problema por en medio .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 05/09/2008, 12:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

a ver yo creo que tienes razon pero mira lo que te digo, yo llamo en el formulario a la funcion de calcular el subtotal pero aora como tengo dos funciones se podria acer asi para llamarlas a las dos o como lo hago porque te cuento como dentro de la otra se hace referencia a la segunda pues no se si aora tendre que llamar en el formulario a la de los decimales o seguir dejandolo como lo tenia para verlo mejor mira el mensaje anterior en el que te lo puse todo

muxas gracias por estar ayudandomne
  #12 (permalink)  
Antiguo 05/09/2008, 12:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: duda de poner decimales en javascript

No le veo el error al código, tendría que ver el HTML completo.

¿Podrías poner un enlace a tu página?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 05/09/2008, 12:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

<script language="javascript" type="text/javascript">

function calcularsubtotal()
{
var subtotal=0;



subtotal+= document.getElementById ("terminal1").value * 3940;
subtotal+= document.getElementById ("terminal2").value * 4650;
subtotal+= document.getElementById ("totem").value * 250;
subtotal+= document.getElementById ("rotulo").value * 250;
subtotal+= document.getElementById ("billetero").value * 410;
subtotal+= document.getElementById ("lector").value * 175;
subtotal+= document.getElementById ("puestam").value * 150;

var iva= subtotal * 16/100;
var total= subtotal + iva;



document.getElementById ("subtotal").innerHTML=subtotal;
document.getElementById ("iva").innerHTML=iva;
document.getElementById ("total").innerHTML=total;



var euro= "€";

document.getElementById ("t1").innerHTML= ponerdecimales(document.getElementById ("terminal1").value * 3940 ) + euro;
document.getElementById ("t2").innerHTML=ponerdecimales(document.getElemen tById ("terminal2").value * 4650) + euro;
document.getElementById ("tot").innerHTML=ponerdecimales(document.getEleme ntById ("totem").value * 250) + euro;
document.getElementById ("rotu").innerHTML=ponerdecimales(document.getElem entById ("rotulo").value * 250) + euro;
document.getElementById ("bille").innerHTML=ponerdecimales(document.getEle mentById ("billetero").value * 410) + euro;
document.getElementById ("lect").innerHTML=ponerdecimales(document.getElem entById ("lector").value * 175) + euro;
document.getElementById ("puest").innerHTML=ponerdecimales(document.getEle mentById ("puestam").value * 150) + euro;

}




function ponerdecimales(numero)
{
numero = String(numero); //Aquí convertimos a String el parámetro
if(numero.indexOf(".")==-1) { numero += ".00" } else {
if(numero.indexOf(".") == numero.length - 2) { numero += "0" }
}
return numero;
}





</script>

<form name="formulario" method="post" action="imprimir.php" >

<table border="1">

<tr>
<td><h5 style="text-decoration:underline; padding-left:15px;"> TIPO DE TERMINAL</h5></td>
<td><h5 style="text-decoration:underline; padding-left:15px;"> PRECIO UNITARIO</h5></td>
<td><h5 style="text-decoration:underline; padding-left:15px;"> CANTIDAD</h5></td>
<td><h5 style="text-decoration:underline; padding-left:15px;"> IMPORTE</h5></td>
</tr>

<tr>
<td>Terminal TM2-S</td>
<td> 3940€ </td>
<td><input type="text" id="terminal1" name="terminal1" size="5" value="0" onChange="if (this.value!='') {calcularsubtotal();}"> </td>
<td><span id="t1">0</span> </td>
</tr>
<tr>
<td>Terminal TM2-M</td>
<td> 4650€ </td>
<td><input type="text" id="terminal2" name="terminal2" size="5" value="0" onChange=" if(this.value!='') {calcularsubtotal(); };"> </td>
<td><span id="t2"></span> </td>
</tr>
<tr>
<td>Totem (instalacion interior)</td>
<td>250€ </td>
<td><input type="text" id="totem" name="totem" size="5" value="0" onChange=" if(this.value!='') { calcularsubtotal() };"> </td>
<td><span id="tot"></span> </td>
</tr>
<tr>
<td>Rot&uacute;lo Banderola (no incluye instalacion)</td>
<td> 250€ </td>
<td><input type="text" id="rotulo" name="rotulo" size="5" value="0" onChange="if(this.value!='') { calcularsubtotal(); };"> </td>
<td><span id="rotu"></span> </td>
</tr>
<tr>
<td>Billetero Con Staker (apilador)</td>
<td> 410€ </td>
<td><input type="text" id="billetero" name="billetero" size="5" value="0" onChange=" if(this.value!='') { calcularsubtotal(); };"> </td>
<td><span id="bille"></span> </td>
</tr>
<tr>
<td>Lector De Tarjetas </td>
<td> 175€ </td>
<td><input type="text" id="lector" name="lector" size="5" value="0" onChange=" if(this.value!='') { calcularsubtotal(); };"> </td>
<td><span id="lect"></span> </td>
</tr>
<tr>
<td>Puesta En Marcha</td>
<td> 150€ </td>
<td><input type="text" id="puestam" name="puestam" size="5" value="0" onChange=" if(this.value!='') { calcularsubtotal(); };"> </td>
<td><span id="puest"></span> </td>
</tr>
<tr>
<td colspan="3" align="right" style="text-decoration:underline;">Subtotal </td>
<td> <span id="subtotal"></span> </td>
</tr>
<tr>
<td colspan="3" align="right">IVA </td>
<td><span id="iva"> </span></td>
</tr>
<tr>
<td colspan="3" align="right">Total </td>
<td> <span id="total"> </span></td>
</tr>


<br><br>





</table>

<br>
<h5 style="text-decoration:underline; padding-left:15px;"> DATOS </h5>


<div style="float: left; width:150px; text-align:left; padding-left:15px;">Nombre y apellidos:</div>
<input type="text" name="nombre" size="46" ><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">DNI: </div>
<input size="12" type="text" name="dni"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Empresa: </div>
<input size="46" type="text" name="empresa"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">CIF: </div>
<input size="12" type="text" name="cif"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Domicilio: </div>
<input size="46" type="text" name="domicilio"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Poblaci&oacute;n: </div>
<input size="46" type="text" name="poblacion"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Provincia: </div>
<input size="46" type="text" name="provincia"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">CP: </div>
<input size="5" type="text" name="cp"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Tel&eacute;fono: </div>
<input size="9" type="text" name="telefono"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">M&oacute;vil: </div>
<input size="9" type="text" name="movil"><br>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Fax: </div>
<input size="9" type="text" name="fax"><br>
<div style="float: left; width:150px; text-align:left; padding-left:15px;">E-mail: </div>
<input size="9" type="text" name="email"><br>



<h5 style="text-decoration:underline; padding-left:15px;"> DATOS DE ENTREGA DEL TERMINAL </h5>

<div style="float: left; width:150px; text-align:left; padding-left:15px;">Domicilio:</div>
<input class="cajaForm" size="46" type="text" name="domicilioT"><br>


<div style="float: left; width:150px; text-align:left; padding-left:15px;">Poblaci&oacute;n:</div>
<input class="cajaForm" size="46" type="text" name="poblacionT"><br>



<div style="float: left; width:150px; text-align:left; padding-left:15px;">Provincia:</div>
<input class="cajaForm" size="46" type="text" name="provinciaT"><br>



<div style="float: left; width:150px; text-align:left; padding-left:15px;">C.P.:</div>
<input class="cajaForm" size="5" type="text" name="cpT"><br><br />

<input type="submit" name="enviar" value="Enviar Datos" />



</form>
  #14 (permalink)  
Antiguo 05/09/2008, 12:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: duda de poner decimales en javascript

Yo lo probé y funciona, ¿o qué más quieres que haga la función?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 05/09/2008, 12:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

que fuerte pues ami me dice eso mira te envio el enlace de la pagina que estoy haciendo para que veas

www.recargasvending.es/solicitud.php
  #16 (permalink)  
Antiguo 05/09/2008, 13:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: duda de poner decimales en javascript

En esa página lo que falla es que la función ponerdecimales() no la cambiaste por la que yo te propuse.

P.S.: De paso quiero advertirte de varias malas costumbres que deberías evitar y que he visto en tu página.
* NO coloques el código Javascript en el cuerpo del documento, usa un archivo *.js.
* Hay varios estilos que veo que se repiten, podrías hacer una sola clase para todos los elementos con el mismo estilo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #17 (permalink)  
Antiguo 05/09/2008, 13:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda de poner decimales en javascript

uff gracias no se que me pasaba ni como lo estaba guardando que fallo mas tonto e estado aciendo algo raro muxisimas gracias
asta otra
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 09:39.