@@ -11,6 +11,7 @@ import Data.String.Conversions (cs)
1111import Data.Text (Text)
1212import Data.Text.Read (Reader, decimal, rational, signed)
1313import Data.Word (Word, Word16, Word32, Word64, Word8)
14+import GHC.Float (double2Float)
1415
1516-- | For getting values from url captures and query string parameters
1617-- Instances should obey:
@@ -130,7 +131,9 @@ instance ToText Double where
130131 toText = cs . show
131132
132133instance FromText Float where
133− fromText = runReader rational
134+ -- Double is more practically accurate due to weird rounding when using
135+ -- rational. We convert to double and then convert to Float.
136+ fromText = fmap double2Float . runReader rational
134137
135138instance ToText Float where
136139 toText = cs . show