"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Se rompe la doble multiplicación en .NET?

¿Se rompe la doble multiplicación en .NET?

Publicado el 2025-02-06
Navegar:221

Is Double Multiplication Broken in .NET?

Explicación detallada del problema de precisión de multiplicación de doble precisión en .net

en c#, el resultado de la expresión double i = 10 * 0.69; es que i se le asigna un valor de 6.899999999999999999999999999999999995, en lugar del 6.9. Esto plantea la pregunta: ¿hay un error en la multiplicación de doble precisión en .NET?

Representación binaria y operación de punto flotante

]]

Para comprender este comportamiento, debe tener una comprensión profunda de las sutilezas de representaciones binarias y operaciones de punto flotante. Los formatos de punto flotante representan aproximadamente números reales como valores binarios finitos, lo que puede conducir a limitaciones de precisión.

El 0.69 aparentemente simple no puede representarse con precisión en binario. Requiere un bucle infinito de números binarios. La representación binaria almacenada en el tipo de datos double es un valor aproximado de 0.69.

constantes optimizadas y almacenadas por compilador

]]

En el fragmento de código proporcionado, el compilador optimiza la expresión realizando la multiplicación y almacenando el resultado como una constante en el ejecutable. Hace esto porque estos valores se conocen en el momento de la compilación. El valor almacenado es una aproximación de punto flotante de 6.9, que es ligeramente menor que el valor real.

tipos de datos y datos alternativos

]

Para resolver este problema y obtener resultados más precisos, se puede utilizar el tipo de datos decimal , que está diseñado para representar valores decimales no repetitivos con mayor precisión. La expresión decimal i = 10m * 0.69m; producirá un resultado de 6.9m.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3