Foros del Web » Programando para Internet » Javascript »

Problemas con los decimales

Estas en el tema de Problemas con los decimales en el foro de Javascript en Foros del Web. Hola a todos tengo esto es un código para calcular en java pero tengo un problema con los decimales me dan mucho decimales por ejemplo ...
  #1 (permalink)  
Antiguo 15/09/2010, 18:58
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Problemas con los decimales

Hola a todos tengo esto es un código para calcular en java pero tengo un problema con los decimales me dan mucho decimales por ejemplo en el código que estoy dejando aquí me da un total de 997.7008 cuando debería de darme 997.70.

Código PHP:
<script>

function 
dp(price
{
   
string "" price;
   
number string.length string.indexOf('.');
   if (
string.indexOf('.') == -1)
      return 
string '.00';
   if (
number == 1)
      return 
string '00';
   if (
number == 2)
      return 
string '0';
   if (
number 3)
      return 
string.substring(0,string.length-number+5);
return 
string;
}

function 
calculate()
{
document.calculo.trimestre.value dp((document.calculo.montoanual1.value)*(document.calculo.cantidad.value)/4)
document.calculo.montoanual1.value dp((document.calculo.Vinmueble.value)*(document.calculo.escala.value)/100)

document.calculo.t1.value dp((document.calculo.t2.value)-(document.calculo.t2.value)*(document.calculo.Ut1.value)/100-(document.calculo.dt1.value))

document.calculo.t2.value dp((document.calculo.t3.value)-(document.calculo.t3.value)*(document.calculo.Ut2.value)/100-(document.calculo.dt2.value))
document.calculo.t3.value dp((document.calculo.t4.value)-(document.calculo.t4.value)*(document.calculo.Ut3.value)/100-(document.calculo.dt3.value))
document.calculo.t4.value dp((document.calculo.t5.value)-(document.calculo.t5.value)*(document.calculo.Ut4.value)/100-(document.calculo.dt4.value))
document.calculo.t5.value dp((document.calculo.t6.value)-(document.calculo.t6.value)*(document.calculo.Ut5.value)/100-(document.calculo.dt5.value))
document.calculo.t6.value dp((document.calculo.montoanual1.value)-(document.calculo.montoanual1.value)*(document.calculo.Ut6.value)/100)
document.calculo.suma1.value dp(eval(document.calculo.t1.value) + eval (document.calculo.t2.value)+ eval (document.calculo.t3.value)+ eval (document.calculo.t4.value)+ eval (document.calculo.t5.value)+ eval (document.calculo.t6.value))

document.calculo.multa1.value dp((document.calculo.suma1.value)*(document.calculo.multa.value)/100)
document.calculo.total.value dp(eval(document.calculo.suma1.value)+ eval (document.calculo.multa1.value)+ eval (document.calculo.trimestre.value))

}

</script> 
  #2 (permalink)  
Antiguo 15/09/2010, 21:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con los decimales

No uses eval() si la intención es convertir a número. Usa Number() o parseFloat()

¿Qué pretendes realizar con la función dp()? Si lo que quieres es reducir la cantidad de decimales a 2, probablemente sea más sencillo:
Código Javascript:
Ver original
  1. function dp(price)
  2. {
  3.     return Math.floor(price * 100) / 100;
  4. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/09/2010, 05:05
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problemas con los decimales

Cita:
Iniciado por David Ver Mensaje
No uses eval() si la intención es convertir a número. Usa Number() o parseFloat()

¿Qué pretendes realizar con la función dp()? Si lo que quieres es reducir la cantidad de decimales a 2, probablemente sea más sencillo:
Código Javascript:
Ver original
  1. function dp(price)
  2. {
  3.     return Math.floor(price * 100) / 100;
  4. }
Hola gracias ya cambie el eval() por el Number como recomendaste lo de dp() no te sabría decir por así fue que lo conseguir el scrip reemplace lo que me recomendate pero ahora no quiere funcionar es que soy muy novato en esto y he tratado de buscarle la vuela a todo pero sin resultados
  #4 (permalink)  
Antiguo 16/09/2010, 05:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con los decimales

"no quiere funcionar" es muy poco específico. ¿Genera algún error? ¿Cuál es el código que tienes actualmente?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 16/09/2010, 09:25
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problemas con los decimales

Cita:
Iniciado por David Ver Mensaje
"no quiere funcionar" es muy poco específico. ¿Genera algún error? ¿Cuál es el código que tienes actualmente?
Bueno luego de hacer algunos cambios el código queso así:

Código PHP:
</script>
<script>

function dp(price)
{
    return Math.floor(price*100)/100;

}

function calculate()
{
document.calculo.trimestre.value = dp((document.calculo.montoanual1.value)*(document.calculo.cantidad.value)/4)
document.calculo.montoanual1.value = dp((document.calculo.Vinmueble.value)*(document.calculo.escala.value)/100)

document.calculo.t1.value = dp((document.calculo.t2.value)-(document.calculo.t2.value)*(document.calculo.Ut1.value)/100-(document.calculo.dt1.value))

document.calculo.t2.value = dp((document.calculo.t3.value)-(document.calculo.t3.value)*(document.calculo.Ut2.value)/100-(document.calculo.dt2.value))
document.calculo.t3.value = dp((document.calculo.t4.value)-(document.calculo.t4.value)*(document.calculo.Ut3.value)/100-(document.calculo.dt3.value))
document.calculo.t4.value = dp((document.calculo.t5.value)-(document.calculo.t5.value)*(document.calculo.Ut4.value)/100-(document.calculo.dt4.value))
document.calculo.t5.value = dp((document.calculo.t6.value)-(document.calculo.t6.value)*(document.calculo.Ut5.value)/100-(document.calculo.dt5.value))
document.calculo.t6.value = dp((document.calculo.montoanual1.value)-(document.calculo.montoanual1.value)*(document.calculo.Ut6.value)/100)
document.calculo.suma1.value = dp(Number(document.calculo.t1.value) + Number (document.calculo.t2.value)+ Number (document.calculo.t3.value)+ Number (document.calculo.t4.value)+ Number (document.calculo.t5.value)+ Number (document.calculo.t6.value))

document.calculo.multa1.value = dp((document.calculo.suma1.value)*(document.calculo.multa.value)/100)
document.calculo.total.value = dp(Number(document.calculo.suma1.value)+ Number (document.calculo.multa1.value)+ Number (document.calculo.trimestre.value))

}

</script> 
Me da los decimales pero ahora resulta que no esta dando la cuenta exacta la cuenta total tendría que dar 997.70 pero ahora me da 99.58 me da un fallo de 0.12 y bueno la verdad resultara unos tontos 0.12 pero administrativamente es bastante grave
  #6 (permalink)  
Antiguo 16/09/2010, 09:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con los decimales

Muéstranos también los campos que tienes en el formulario y los datos que utilizas. Así será más fácil realizar pruebas.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 16/09/2010, 09:50
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problemas con los decimales

Cita:
Iniciado por David Ver Mensaje
Muéstranos también los campos que tienes en el formulario y los datos que utilizas. Así será más fácil realizar pruebas.

Saludos.
Te envió el archivo ya que el código es muy largo para publicarlos por aquí, en este enlace puedes descargar el archivo AQUI
  #8 (permalink)  
Antiguo 16/09/2010, 10:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con los decimales

¿Y cuáles son los datos de prueba con los que el resultado debería ser 997.7?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 16/09/2010, 10:52
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: Problemas con los decimales

Cita:
Iniciado por David Ver Mensaje
¿Y cuáles son los datos de prueba con los que el resultado debería ser 997.7?
Ya esta colocados solo tiene que apretar el botón CALCULAR hasta que saque todo los cálculos y vas haber que te dará 997.58, si quieres también te puedo enviar la hoja excel para que vea que da diferencias de decimales

Última edición por expecimen; 16/09/2010 a las 10:58

Etiquetas: Ninguno
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 21:54.