Tabla de Contenido
0. Introducción1. Rendimiento
2. Conclusiones
3. Glosario
4. Referencias
0. Introducción
Los tipos de datos numéricos de punto flotante como float y double son útiles para cálculos científicos (coordenadas espaciales, mediciones sobre magnitudes físicas que requieren alta precisión); el tipo float es utilizado para la creación de librerías de gráficos, double para representación de números reales.
Por otro lado, el tipo decimal es útil para cálculo financiero y también para valores resultantes de operaciones hechas por el mismo hombre en lugar de valores obtenidos de mediciones de la naturaleza.
En la Tabla 1 se incluyen algunas de las diferencias importantes de estos tres tipos de datos numéricos.
Tabla 1. Resumen de diferencias de tipos punto flotante y decimal [5]. |
1. Rendimiento
Entre las consideraciones de rendimiento de los tipos de punto flotante y el tipo decimal se tienen las siguientes:
- La aritmética de punto flotante es significativamente mayor, debido a que está soportada directamente por el hardware adyacente.
- La aritmética con datos de tipo decimal es tratada en base 10 (decimal) y manejada directamente por software. Esto la hace varias veces más lenta. Esto recae en reducción del rendimiento de la aplicación de forma considerable.
En el siguiente código en lenguaje C# presento una versión rudimentaria de prueba de rendimiento, que consiste en generar números pseudoaleatorios para los tipos double y decimal, luego se calcula la suma de todos los aleatorios generados, y se toma el tiempo en milisegundos, y se presentan estos resultados:
Resultados de las pruebas:
Figura 1. Ejecución prueba no. 1 double vs decimal. |
Figura 1. Ejecución prueba no. 2 double vs decimal. |
Figura 1. Ejecución prueba no. 3 double vs decimal. |
2. Conclusiones
Hemos visto muy someramente las diferencias entre los tipos de datos de punto flotante y decimal En la prueba en código C# que se realizó se manifiesta la diferencia significativa a la hora de realizar aritmética básica de suma de números pseudoaleatorios de ambos tipos. Esta consideración debe ser tenida en cuenta cuando creemos aplicaciones centradas en datos, en particular financieras o que requieran cálculos financieros.
3. Glosario
- Aritmética de punto flotante- decimal
- Floating point
- Prueba de rendimiento
4. Referencias
[1] What is the difference between Decimal, Float and Double in C#? - http://stackoverflow.com/questions/618535/what-is-the-difference-between-decimal-float-and-double-in-c
[2] Decimal vs Double Speed - http://stackoverflow.com/questions/329613/decimal-vs-double-speed
[3] What is the difference between Decimal, Float and Double in C#? - http://stackoverflow.com/questions/618535/what-is-the-difference-between-decimal-float-and-double-in-c
[4] Generating a Random Decimal in C# - http://stackoverflow.com/questions/609501/generating-a-random-decimal-in-c-sharp[5] C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
H
The Decimal, Double, and Float variable types are different in the way that they store the values. Precision is the main difference where float is a single precision (32 bit) floating point data type, double is a double precision (64 bit) floating point data type and decimal is a 128-bit floating point data type.
ResponderEliminarFloat - 32 bit (7 digits)
Double - 64 bit (15-16 digits)
Decimal - 128 bit (28-29 significant digits)
More about....Decimal vs Double vs Float
Ling