Cálculos de coma flotante

Numeros binarios

Actualmente Velneo V7 tiene un funcionamiento en cuanto a números de coma flotante que es importante que todos los desarrolladores conozcamos. En este FAQ intentamos explicar el funcionamiento de los cálculos de coma flotante y cómo funcionará en próximas versiones.

¿Cómo maneja Velneo V7 los números con decimales?

Velneo V7 usa C++ en toda su estructura, a su vez tanto C como C++ usa la representación binaria de números de coma flotante bajo el estándar IEEE 754-1985La representación binaria es la más efectiva respecto a rendimiento y es la usada por la mayoría de los lenguajes de programación.

¿Este tipo de representación binaria de números de coma flotante tiene algún problema?

Lo más habitual en el uso común de los números de coma flotante en aplicaciones empresariales es usar la base 10, para el tipo de representación binaria existen números que por mucha precisión que tenga, no puede representarlos exactamente, con lo que puede existir una desviación en un decimal en una posición extrema (ej. 0.0000000000000001).

¿Puede dar problemas el uso de la representación binaria?

Los ordenadores y los procesadores trabajan en binario, con lo que trabajar con números de coma flotante en representación con sistema binario es realmente mucho más rápido y ocupa menos memoria. La mayoría de las operaciones se realizan a nivel hardware.El estándar IEEE 754-1985 marca el uso de los números de coma flotante con representación binaria.

¿Cómo se puede solventar?

Por el momento, basta con usar un decimal más en los campos a la hora de guardar los datos, y usar la función de redondeo cuando queramos mostrar los datos al usuario. Con esta simple operación garantizamos la correcta visualización de estos números.Por otro lado, Velneo V7 en su versión 7.3 (Estará disponible a finales del mes de Febrero de 2010) usará la representación con sistema decimal bajo la actualización del estándar IEEE_754-2008. Existen soluciones alternativas, sin embargo hemos optado por la implementación bajo el estándar para ofrecer mejor compatibilidad en el futuro con distintos sistemas operativos y hardware.

¿Por qué no se ha realizado antes?

Muchos lenguajes de programación sólo contemplan la representación en sistema binario y es el desarrollador quien puede solucionar el problema por software de una manera sencilla.Hasta las versiones anteriores de Velneo nos hemos centrado en las funcionalidades básicas y diferenciales de la plataforma. Conociendo que la implementación de una representación decimal puede facilitar la tarea al desarrollador en la versión 7.3 aparecerá esta funcionalidad de forma nativa.Debemos recordar que Velneo V7 tiene que dar solución para todos los sistemas operativos actuales y futuros con lo que ofrecer una solución global complica la implementación.La implementación de la representación en sistema decimal se lleva desarrollando durante meses para conseguir el máximo rendimiento. En este área esta teniendo una participación directa nuestro arquitecto Juan Muñoz-Cobos consciente de que el rendimiento en este tipo de operaciones es básico para toda la plataforma.

Pero, ¿otros lenguajes tienen el mismo funcionamiento?

Esta peculiaridad en el uso de números de coma flotante viene directamente del uso de los números en el procesador, con lo que cada lenguaje puede aportar o no aportar una solución.Este error en la representación de los números decimales se refiere a que algunas fracciones decimales no se pueden representar exactamente como fracciones binarias (de base 2). Ésta es la principal razón de que Python, Perl, C, C++, Java, Fortran y muchos otros no suelan presentar el número decimal exacto.En esta web sobre python tienen una buena explicación técnica del problema muy fácil de entender.En este otro enlace de Microsoft, se explican las consideraciones en el uso de números de coma flotante en sus productos.Si quieres ampliar la información sobre la aritmética de coma flotante, recomendamos este documento de Sun Microsystems.Otros lenguajes necesitan hacer uso de librerías externas para implementar otro tipo de dato con representación decimal.Ruby - http://ruby-decimal.rubyforge.org/C - http://speleotrove.com/decimal/decnumber.html

¿Cómo maneja Velneo 6.x los números decimales?

Para Velneo 6.x se realizaron unas mejoras sobre el estándar IEEE 754-1985 que permite operar sin problemas de precisión de cálculo hasta un número limitado de decimales. Esta modificación se hizo en la versión 4.0.La implementación realizada para Velneo 6.x no se vio adecuada para Velneo V7 ya que se ha querido mejorar el rendimiento y adaptarnos a un estándar de cara al futuro, además de que era necesario que fuera funcional en todas las plataformas y sistemas operativos.

Déjanos tus datos para probar la plataforma