Articles of coma flotante

C: Lanzar un entero mínimo de 32 bits (-2147483648) para flotar da un número positivo (2147483648.0)

Estaba trabajando en un proyecto integrado cuando me encontré con algo que pensé que era un comportamiento extraño. Pude reproducirlo en el teclado (ver a continuación) para confirmar, pero no tengo ningún otro comstackdor de C en mi máquina para probarlo. Escenario: tengo #define para el valor más negativo que puede contener un entero de […]

Aritmética de punto flotante en script de shell UNIX

¿Cómo hacer aritmética con números de punto flotante como 1.503923 en un script de shell? Los números de coma flotante se extraen de un archivo como una cadena. El formato del archivo es el siguiente: 1.5493482,3.49384,33.284732,23.043852,2.2384… 3.384,3.282342,23.043852,2.23284,8.39283… . . . Aquí hay un código de muestra simplificado que necesito para trabajar. Todo funciona bien hasta […]

Representando números enteros en dobles

¿Puede un doble (de un número dado de bytes, con un equilibrio de mantisa / exponente razonable) mantener con precisión el rango de un entero sin signo de la mitad de ese número de bytes? Por ejemplo, ¿puede un doble de ocho bytes mantener con precisión el rango de números de un byte de cuatro […]

Evitar valores denormales en C ++

Después de buscar un error de rendimiento durante mucho tiempo, leí acerca de los valores de punto flotante denormal. Los valores de punto flotante aparentemente desnormalizados pueden ser un gran problema de rendimiento, como se ilustra en esta pregunta: ¿Por qué el cambio de 0.1f a 0 disminuye el rendimiento en 10 veces? Tengo un […]

bits flotantes y aliasing estricto

Intento extraer los bits de un flotante sin invocar un comportamiento indefinido. Aqui esta mi primer bash: unsigned foo(float x) { unsigned* u = (unsigned*)&x; return *u; } Según tengo entendido, no está garantizado que funcione debido a las estrictas reglas de alias, ¿verdad? ¿Funciona si se toma un paso intermedio con un puntero de […]

Problemas con float en C

Tengo este pequeño progtwig en C que calcula la raíz cuadrada x de un entero positivo N usando una función recursiva (implementada usando un ciclo while). Si calculo x usando esto: x = (1/2)*(x + N/x) //x0 = 1.0 Entonces x sigue creciendo inf y luego nan. Sin embargo, si uso esto: x = (x […]

Un método rápido para redondear un doble a un int de 32 bits explicado

Al leer el código fuente de Lua , noté que Lua usa una macro para redondear un double a un int 32 bits. Extraje la macro , y se ve así: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; ud = (d) + 6755399441055744.0; \ (i) = (t)ui[ENDIANLOC];} […]

¿Qué tipo de datos MySQL debería usarse para Latitud / Longitud con 8 lugares decimales?

Estoy trabajando con datos de mapas, y la Latitude/Longitude extiende a 8 lugares decimales. Por ejemplo: Latitude 40.71727401 Longitude -74.00898606 Vi en el documento de Google que usa: lat FLOAT( 10, 6 ) NOT NULL, lng FLOAT( 10, 6 ) NOT NULL sin embargo, sus posiciones decimales solo van a 6. ¿Debo usar FLOAT(10, 8) […]

¿Deberíamos comparar los números de coma flotante para la igualdad con un error * relativo *?

Hasta ahora, he visto muchas publicaciones relacionadas con la igualdad de números de coma flotante. La respuesta estándar a una pregunta como “¿cómo deberíamos decidir si xey son iguales?” es abs(x – y) < epsilon donde épsilon es una constante pequeña y fija . Esto se debe a que los “operandos” xey son a menudo […]

Comparando IEEE flota y dobla para la igualdad

¿Cuál es el mejor método para comparar IEEE flotantes y dobles para la igualdad? He oído hablar de varios métodos, pero quería ver qué pensaba la comunidad.