none
Problemas al recortar decimales. RRS feed

  • Pregunta

  • 

    Compañeros tengo un problema con los decimales, el problema es que tengo un precio neto con impuesto del 34% el cual me da 21.43 si le quitamos el impuesto 21.43/1.34 = 15.99253731343284 el cual corto a 2 decimales 15.99, ahora bien si cambio el precio neto a 21.42/1.34=15.98507462686567 el cuan corto a 2 decimales 15.99 me lo redondea y me da el mismo resultado lo que hice fue cortar decimales sin redondeo y ahora si me dio 15.98 ahí todo bien pensando que lo tenía resuelto probé con otro precio neto el cual fue 21.47/1.34= 16.02238805970149 corte a 2 decimales 16.02 bien intente de nuevo con un precio neto de 21.48/1.34=16.02985074626866 corte a 2 decimales 16.02 el problema aún persiste y si pongo de nuevo el redondeo regresaré al problema del principio. ¿Alguna idea de cómo solucionarlo?.

    Mis variables son Tipo Decimal.

    LENGUAJE c#

    martes, 14 de mayo de 2019 1:33

Respuestas

  • Hola Abner Aaron: 

    El problema no son los números decimal, es simplemente que a dos decimales, la precisión de esos cálculos es inexacta. Ocurre en todos los países y es algo tan asumido que hasta tienen hasta sus propias cuentas contables. (Si mal no recuerdo 634)

    Yo, los llamo números imposibles.

    Tú has encontrado ese, pero estas en la misma tesitura con muchísimos.

    En España se tributa para la normalidad con un 21% de un impuesto, y el mejor ejemplo de esto, es que no se puede vender a 100€

    Si a 82.65 * 21/100 = 17.3565. Cantidad sumada a 82.65 = 100.0065, redondeo = 100.01

    Si a 82.65 * 21/100 = 17.3565. O redondeo 17.36 Cantidad sumada a 82.65 = 100.01

    Si a 82.64 * 21/100 = 17.3544. Cantidad sumada a 82.64 = 99.9944, redondeo = 99.99

    Si a 82.64 * 21/100 = 17.3544. O redondeo 17.35 Cantidad sumada a 82.64 = 99.99

    Expresado tu problema de otro modo:

    Precio neto menos impuesto = base imponible,

    Base imponible más impuesto = precio neto.

    Pero no da lo mismo. Por tanto es simplemente un problema de precisión. Si quieres que te cuadren los números juega con más decimales.

    martes, 14 de mayo de 2019 3:58

Todas las respuestas

  • Hola

    si lo que quieres es mas exactitud tendrás que ampliar mas decimales

    revisando los números que expones que serian 16.0223 y 16.0298 como quieres que afecten las milésimas

    ni siquiera es un céntimo la diferencia

    martes, 14 de mayo de 2019 1:45
  • Hola Abner Aaron: 

    El problema no son los números decimal, es simplemente que a dos decimales, la precisión de esos cálculos es inexacta. Ocurre en todos los países y es algo tan asumido que hasta tienen hasta sus propias cuentas contables. (Si mal no recuerdo 634)

    Yo, los llamo números imposibles.

    Tú has encontrado ese, pero estas en la misma tesitura con muchísimos.

    En España se tributa para la normalidad con un 21% de un impuesto, y el mejor ejemplo de esto, es que no se puede vender a 100€

    Si a 82.65 * 21/100 = 17.3565. Cantidad sumada a 82.65 = 100.0065, redondeo = 100.01

    Si a 82.65 * 21/100 = 17.3565. O redondeo 17.36 Cantidad sumada a 82.65 = 100.01

    Si a 82.64 * 21/100 = 17.3544. Cantidad sumada a 82.64 = 99.9944, redondeo = 99.99

    Si a 82.64 * 21/100 = 17.3544. O redondeo 17.35 Cantidad sumada a 82.64 = 99.99

    Expresado tu problema de otro modo:

    Precio neto menos impuesto = base imponible,

    Base imponible más impuesto = precio neto.

    Pero no da lo mismo. Por tanto es simplemente un problema de precisión. Si quieres que te cuadren los números juega con más decimales.

    martes, 14 de mayo de 2019 3:58
  • Hola 

    Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncias en tu consulta  y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; vamos a considerar tu duda como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar las misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

    Gracias por usar los foros de MSDN.

    Tonatiuh Abrego
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. 
    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    miércoles, 22 de mayo de 2019 21:23
    Moderador