Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
¿Puede el doble perder su precisión al convertir de decimal en C#?

Por ejemplo, tengo algo como este código:

 double a = 68.24; double b = 0.01; double c = a - b;

c es igual a 68.22999999999999 . Y digamos que no puedo cambiar los tipos de a , b y c ( debería ser double ). Pero puedo hacer esto:

 double a = 68.24; double b = 0.01; decimal _c = (decimal) a - (decimal) b; double c = (double)_c;

Ahora c es 68.23 , que es lo que necesito.

Pero, ¿podría perder la precisión de la conversión de c de decimal _c si tengo diferentes valores de a y b ?

Más ampliamente, ¿cuándo double pierde su precisión? Porque, a y b en el depurador son precisos (o al menos es lo que muestra), si los convierto a decimal también son precisos. Pero operar sobre ellos de alguna manera crea un valor impreciso.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¿Sabes que si tratas de escribir 1/3 usando un punto decimal, es imposible hacerlo con precisión? Lo mismo ocurre con muchos valores binarios. Cuando trabaja con valores de coma flotante en el código, casi siempre solo tiene una aproximación del valor exacto que cree que tiene.

El tipo decimal ayuda porque usa el doble de bits para representar un rango de valores posible significativamente más pequeño (±10 28 vs ±10 300+ ). Esto nos da suficiente precisión, el error de redondeo parece desaparecer para la mayoría de las cosas (sigue ahí, es demasiado pequeño para notarlo).

Para el código de muestra en la pregunta, el compilador detecta que solo tenemos constantes y está optimizando algunas de las conversiones hacia y desde double , por lo que parece que solo trabajamos con valores decimal hasta que finalmente emitimos el resultado.

Y digamos que no puedo cambiar los tipos de a, b y c ( debería ser el doble).

Independientemente de esa declaración, si le importa la precisión del resultado, probablemente necesite decimal .

Entonces, ¿por qué usaríamos double ? Velocidad. El tipo double puede aprovechar las instrucciones matemáticas implementadas y optimizadas directamente en la CPU, lo que a veces hace que las cosas sean miles de veces más rápidas en comparación con la implementación de las operaciones matemáticas en el software.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda