Articles of punto flotante

Usando la función math.isclose con valores cercanos a 0

Como sabemos, debido a la representación binaria de números, esta expresión se evalúa como False (al menos en Python): 0.2 + 0.4 == 0.6 Para poder verificar la igualdad dentro de los errores numéricos, el módulo de ofertas math isclose : import math math.isclose(0.2 + 0.4 , 0.6) Esta última expresión produce True como se […]

Django, la división entre dos resultados de anotación no se calculará correctamente

Estoy tratando de obtener una división entre dos resultados de anotación en queryset. La impresión es mucho más grande que el clic, por lo que debería obtener el décimo decimal. def get_queryset(self): return googleData.objects.filter(account=self.account_name).\ values(‘date’).\ annotate(Sum(‘click’), Sum(‘impression’), Sum(‘converted_click’), Sum(‘conversion_value’), Sum(‘cost’), Sum(‘conversion_value’), ctr_monthly= Sum(‘click’)/Sum(‘impression’)).\ order_by(‘-date’) Problema aquí ctr_monthly= Sum(‘click’)/Sum(‘impression’)) En plantilla tengo: {{ googleData.ctr_monthly | floatformat:2}} […]

Matemáticas de punto flotante en python / numpy no reproducibles en máquinas

Comparando los resultados de un cálculo de punto flotante en un par de máquinas diferentes, están produciendo constantemente resultados diferentes. Aquí hay un ejemplo simplificado que reproduce el comportamiento: import numpy as np from numpy.random import randn as rand M = 1024 N = 2048 np.random.seed(0) a = rand(M,N).astype(dtype=np.float32) w = rand(N,M).astype(dtype=np.float32) b = np.dot(a, […]

¿Crear un archivo wav flotante de 32 bits en python?

Quiero crear archivos flotantes WAV de 32 bits en Python (2.x). Mientras que los archivos WAV “estándar” generalmente usan int, muchas aplicaciones de audio profesionales procesan (y guardan) datos de audio como flotante. El módulo de wave estándar no es capaz de hacer esto: http://bugs.python.org/issue16525 ¿Alguien lo ha logrado sin usar módulos parcheados? Tnx por […]

Especificador de formato de precisión de punto flotante de Python

Digamos que tengo algunos números de 32 bits y algunos de 64 bits: >>> import numpy as np >>> w = np.float32(2.4) >>> x = np.float32(4.555555555555555) >>> y = np.float64(2.4) >>> z = np.float64(4.555555555555555) Puedo imprimirlos con %f pero tiene decimales adicionales que no son necesarios: >>> ‘%f %f %f %f’ % (w, x, y, […]

Unittest (a veces) falla debido a imprecisión de punto flotante

Tengo un vector de clase que representa un punto en el espacio tridimensional. Este vector tiene un método de normalize(self, length = 1) que escala el vector hacia abajo / arriba para que tenga length == vec.normalize(length).length . La prueba de unidad para este método a veces falla debido a la imprecisión de los números […]

Errores de redondeo en la división de pisos Python.

Sé que los errores de redondeo ocurren en la aritmética de punto flotante, pero alguien puede explicar la razón de esto: >>> 8.0 / 0.4 # as expected 20.0 >>> floor(8.0 / 0.4) # int works too 20 >>> 8.0 // 0.4 # expecting 20.0 19.0 Esto sucede tanto en Python 2 como en 3 […]

Convierte float en cadena sin notación científica y precisión falsa

Quiero imprimir algunos números de punto flotante para que siempre estén escritos en forma decimal (por ejemplo, 12345000000000000000000.0 o 0.000000000000012345 , no en notación científica , pero me gustaría mantener los 15.7 dígitos decimales de precisión y nada más. Es bien sabido que la repr de un float está escrita en notación científica si el […]

El formato flotante de Django solo obtiene dígitos después del punto flotante

¿Hay un filtro de plantilla django para obtener solo dígitos después del punto flotante? Por ejemplo : 2.34 –> 34 2.00 –> 00 1.10 –> 10 No he encontrado una respuesta en https://docs.djangoproject.com/en/dev/ref/templates/builtins/ .

Python / numpy precisión de texto en coma flotante

Digamos que tengo algunos valores de punto flotante de 32 bits y 64 bits: >>> import numpy as np >>> v32 = np.array([5, 0.1, 2.4, 4.555555555555555, 12345678.92345678635], dtype=np.float32) >>> v64 = np.array([5, 0.1, 2.4, 4.555555555555555, 12345678.92345678635], dtype=np.float64) Quiero serializar estos valores a texto sin perder precisión (o al menos realmente cerca de no perder precisión). […]