Haskell gamas y flotadores

¿Por qué el comportamiento de la notación de rango de Haskell es diferente para flotantes que para enteros y caracteres?

Prelude> [1, 3 .. 10] :: [Int]
[1,3,5,7,9] 
Prelude> [1, 3 .. 10] :: [Float]
[1.0,3.0,5.0,7.0,9.0,11.0]
Prelude> ['a', 'c' .. 'f']
"ace"

Lo entendería si el último elemento estuviera cerca del límite superior, pero esto obviamente no es un problema de redondeo.