tuplas sobre sirve simbolos que para opciones mundo imprimir hola hacer funciones como basico haskell floating-point range-notation

sobre - imprimir en haskell



Haskell: Salida inesperada para la expresión (2)

Esto es el resultado de la imprecisión de los valores de coma flotante , no es particular de Haskell. Si no puede tratar con la aproximación inherente al punto flotante, entonces puede usar Rational con un alto costo de rendimiento:

> import Data.Ratio Data.Ratio> [0,1%10.. 1%1] [0 % 1,1 % 10,1 % 5,3 % 10,2 % 5,1 % 2,3 % 5,7 % 10,4 % 5,9 % 10,1 % 1]

Para recalcar el punto, aquí está Python:

>>> 0.3 0.29999999999999999

Y aquí está C:

void main() { printf("%0.17f/n",0.3); } $ gcc t.c 2>/dev/null ; ./a.out 0.29999999999999999

Al evaluar la expresión:

*main> [0, 0.1 .. 1]

En realidad estaba esperando:

[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]

Pero estaba bastante sorprendido de ver la salida

[0.0,0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0]

¿Por qué Haskell produce ese resultado después de la evaluación?