Resultados 1 al 7 de 7

Tema: Problema con redondeo a 2 decimales en javascript...

  1. #1
    El señor de los forillos Avatar de Shook
    Ubicación
    Madrid
    Mensajes
    4,753

    Predeterminado Problema con redondeo a 2 decimales en javascript...

    Wemas...

    El caso es que necesito redondear EUROS con javascript, para un tema de facturación...

    El problema es muy sencillo, por internet he buscado y he encontrado cosas que parecen funcionar, cosas como:

    Código:
        function redondear(num)      { 		
    var original=parseFloat(num); 		
    var result=Math.round(original*100)/100 ; 		
    return result; 	}
    Pero... NO funciona bien en un caso, y me parece importantísimo!

    Para redondear decimales con los €, cuando uno tiene una cifra de por ejemplo 1,005 debería dar 1,01€ y no 1,00 como da dicha función (y todas las demás que he encontrado).

    Por lo cual salen descuadres a la mínima y como que para algo contable es una putada.

    En los demás casos dicha función va bien, había pensado hacerme la función yo mismo pero claro, si contamos con muchos decimales, hasta llegar a 2 puedes ser un infierno para que quede bien.

    Alguien tiene por ahí código que funcione bien?

    Un saludo y gracias

  2. #2

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    Llegar a tanto lo veo complicado, ya que javascript no incluye ningún tipo money/currency, y se producen ciertas imprecisiones.

    Una aproximación sería:
    Código:
    function redondear(num)
    { 		
    	var original=parseFloat(num);
    	if ((original*100%100)>=0.5)
    	{
    		var result=Math.round(original*100)/100+0.01;
    	}
    	else
    	{
    		var result=Math.round(original*100)/100; 		
    	}
    	return result;
    }

  3. #3
    El señor de los forillos Avatar de Shook
    Ubicación
    Madrid
    Mensajes
    4,753

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    No te lo pierdas que anoche así con la coña hago una prueba y parece que ahora sí funciona bien.... tengo que hacer más pruebas, xo yo juraría que 0,005 me daba 0!!!

    Sino eso que me has puesto creo que vale bastante bien!

    X cierto ya que estamos, a veces me pasa una cosa que me deja flipao, aunque en c# ya me pasó y lo solucioné cambiando el tipo de valor...

    Cuando juegas con float... de repente te coloca que tras una operación te sale algo (que es mentira, xq es algo tipo X + Y) como 25,0000000000009 a mi me deja flipao! Sabes por que se produce y como solucionarlo?

    Muchas gracias

    Sabes por que pasa eso

  4. #4
    Master Avatar de Ricardo (alfa)
    Ubicación
    Argentina
    Edad
    30
    Mensajes
    1,918

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    Esto ultimo que comentas nunca me ha pasado en la vida :P pero me intriga bastante.
    AMD 3200+ Venice
    A8N-SLI PREMIUM
    2x1gb OCZ EXTREME GOLD PREMIUM
    7800GT BFG

  5. #5

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    Ese problema es lo que comentaba de los fallos de precisión con los float.

  6. #6
    El señor de los forillos Avatar de Shook
    Ubicación
    Madrid
    Mensajes
    4,753

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    Cita Iniciado por jgutierrez Ver mensaje
    Ese problema es lo que comentaba de los fallos de precisión con los float.

    Pues me parece acojonante que pase eso...

    Aunq en principio sería hacer un redondeo a 2 decimales antes de mostrarlos y ya está, total... hay tanto cero detrás que es despreciable.

    No? U otra solución?

  7. #7

    Predeterminado Re: Problema con redondeo a 2 decimales en javascript...

    A bote pronto, y teniendo en cuenta que debe ser Javascript, no se me ocurre otra opción.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •