diff --git a/Text/FShow/RealFloat.hs b/Text/FShow/RealFloat.hs
--- a/Text/FShow/RealFloat.hs
+++ b/Text/FShow/RealFloat.hs
@@ -19,10 +19,13 @@
     , fshowFFloat
     , fshowGFloat
     , Double7(..)
+    , FullDouble(..)
     , Float7(..)
+    , FullFloat(..)
     ) where
 
 import GHC.Show
+import GHC.Read
 import GHC.Float (showSignedFloat)
 import Text.FShow.RealFloat.Internals
 
@@ -89,6 +92,30 @@
   fshowsPrec p  = showSignedFloat fshowFloat p
   fshowList     = showList__ (fshowsPrec 0)
 
+-- | newtype wrapper for 'Double'. The 'Show' (and 'FShow') instance
+--   displays all significant digits.
+newtype FullDouble = FD { unFD :: Double }
+  deriving (Eq, Ord, Num, Fractional, Real, RealFrac, Floating, RealFloat)
+
+instance DispFloat FullDouble where
+  decDigits (FD x)  = case decodeFloat x of
+                        (_,e) -> case ((53+e)*8651) `quot` 28738 of
+                                   q | e >= 0    -> q+2
+                                     | e > (-53) -> q+1-e
+                                     | otherwise -> q-e
+  binExp _          = 52
+
+instance Show FullDouble where
+  showsPrec p = showSignedFloat fshowFloat p
+
+instance FShow FullDouble where
+  fshowsPrec p = showSignedFloat fshowFloat p
+  fshowList     = showList__ (fshowsPrec 0)
+
+instance Read FullDouble where
+  readPrec = fmap FD readPrec
+  readListPrec = readListPrecDefault
+
 -- | newtype wrapper for 'Float'. The 'Show' (and 'FShow') instance
 --   displays numbers rounded to seven significant digits.
 newtype Float7 = F7 Float
@@ -104,6 +131,30 @@
 instance FShow Float7 where
   fshowsPrec p  = showSignedFloat fshowFloat p
   fshowList     = showList__ (fshowsPrec 0)
+
+-- | newtype wrapper for 'Double'. The 'Show' (and 'FShow') instance
+--   displays all significant digits.
+newtype FullFloat = FF { unFF :: Float }
+  deriving (Eq, Ord, Num, Fractional, Real, RealFrac, Floating, RealFloat)
+
+instance DispFloat FullFloat where
+  decDigits (FF x)  = case decodeFloat x of
+                        (_,e) -> case ((24+e)*8651) `quot` 28738 of
+                                   q | e >= 0    -> q+2
+                                     | e > (-24) -> q+1-e
+                                     | otherwise -> q-e
+  binExp _          = 23
+
+instance Show FullFloat where
+  showsPrec p = showSignedFloat fshowFloat p
+
+instance FShow FullFloat where
+  fshowsPrec p = showSignedFloat fshowFloat p
+  fshowList     = showList__ (fshowsPrec 0)
+
+instance Read FullFloat where
+  readPrec = fmap FF readPrec
+  readListPrec = readListPrecDefault
 
 {-
     The code below is a minor modification of code from GHC.Float
diff --git a/floatshow.cabal b/floatshow.cabal
--- a/floatshow.cabal
+++ b/floatshow.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             0.2.1
+Version:             0.2.2
 
 -- Constraint on the version of Cabal needed to build this package.
 Cabal-version:       >=1.6
@@ -75,7 +75,7 @@
                      Text.FShow.Raw
 
   -- Packages needed in order to build this package.
-  Build-depends:     base >= 4 && < 5, array >= 0.1 && < 0.4
+  Build-depends:     base >= 4 && < 5, array >= 0.1 && < 0.5
   if flag(gmp)
     Build-depends:   integer-gmp
   else
