diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,8 @@
+## 0.8.22.1
+
+* Make numeric string detection slightly smarter so, e.g., `.` does
+  not get quoted
+
 ## 0.8.22
 
 * Update to libyaml hosted on Github [#105](https://github.com/snoyberg/yaml/issues/105)
diff --git a/Data/Yaml/Internal.hs b/Data/Yaml/Internal.hs
--- a/Data/Yaml/Internal.hs
+++ b/Data/Yaml/Internal.hs
@@ -284,10 +284,11 @@
     "y Y yes Yes YES n N no No NO true True TRUE false False FALSE on On ON off Off OFF null Null NULL ~"
 
 isNumeric :: Text -> Bool
-isNumeric =
-    T.all isNumeric'
+isNumeric t =
+    T.all isNumeric' t && T.any isNumber t
   where
-    isNumeric' c = ('0' <= c && c <= '9')
+    isNumber c = '0' <= c && c <= '9'
+    isNumeric' c = isNumber c
                 || c == 'e'
                 || c == 'E'
                 || c == '.'
diff --git a/test/Data/YamlSpec.hs b/test/Data/YamlSpec.hs
--- a/test/Data/YamlSpec.hs
+++ b/test/Data/YamlSpec.hs
@@ -70,6 +70,7 @@
         it "encode/decode strings" caseEncodeDecodeStrings
         it "decode invalid file" caseDecodeInvalid
         it "processes datatypes" caseDataTypes
+        it "encode invalid numbers" caseEncodeInvalidNumbers
     describe "Data.Yaml.Pretty" $ do
         it "encode/decode" caseEncodeDecodeDataPretty
         it "encode/decode strings" caseEncodeDecodeStringsPretty
@@ -433,6 +434,10 @@
         , ("false", D.Bool False)
         , ("null", D.Null)
         ]
+
+caseEncodeInvalidNumbers :: Assertion
+caseEncodeInvalidNumbers =
+    D.encode (D.String ".") @?= ".\n"
 
 caseDataTypesPretty :: Assertion
 caseDataTypesPretty =
diff --git a/yaml.cabal b/yaml.cabal
--- a/yaml.cabal
+++ b/yaml.cabal
@@ -1,5 +1,5 @@
 name:            yaml
-version:         0.8.22
+version:         0.8.22.1
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>, Anton Ageev <antage@gmail.com>,Kirill Simonov
