Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda