diff --git a/confuse.py b/confuse.py
index 8d5d875..5ec3936 100644
--- a/confuse.py
+++ b/confuse.py
@@ -1681,6 +1681,8 @@ def as_template(value):
         return OneOf(value)
     elif value is float:
         return Number()
+    elif isinstance(value, float):
+        return Number(value)
     elif value is None:
         return Template()
     elif value is dict:

diff --git a/test/test_valid.py b/test/test_valid.py
index f1452f3..f5a520f 100644
--- a/test/test_valid.py
+++ b/test/test_valid.py
@@ -163,6 +163,11 @@ class AsTemplateTest(unittest.TestCase):
         self.assertIsInstance(typ, confuse.Number)
         self.assertEqual(typ.default, confuse.REQUIRED)
 
+    def test_concrete_float_as_template(self):
+        typ = confuse.as_template(2.)
+        self.assertIsInstance(typ, confuse.Number)
+        self.assertEqual(typ.default, 2.)
+
     def test_none_as_template(self):
         typ = confuse.as_template(None)
         self.assertIs(type(typ), confuse.Template)

as_template does not convert float
If it encounters an integer, it will convert it to an integer type validator
https://github.com/beetbox/confuse/blob/5528e7ae70850be07ecaca25826c972c195ee90b/confuse.py#L1666-L1669

If it encounters a float, it throws an error
https://github.com/beetbox/confuse/blob/5528e7ae70850be07ecaca25826c972c195ee90b/confuse.py#L1682-L1683
```
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1665, in as_template
    return MappingTemplate(value)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1209, in __init__
    subtemplates[key] = as_template(typ)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1665, in as_template
    return MappingTemplate(value)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1209, in __init__
    subtemplates[key] = as_template(typ)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1665, in as_template
    return MappingTemplate(value)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1209, in __init__
    subtemplates[key] = as_template(typ)
  File "/usr/local/lib/python3.7/dist-packages/confuse.py", line 1693, in as_template
    raise ValueError(u'cannot convert to template: {0!r}'.format(value))
ValueError: cannot convert to template: 0.5
```
test/test_valid.py::AsTemplateTest::test_concrete_float_as_template
test/test_valid.py::ValidConfigTest::test_attribute_access test/test_valid.py::ValidConfigTest::test_default_value test/test_valid.py::ValidConfigTest::test_int_default_shortcut test/test_valid.py::ValidConfigTest::test_int_template_shortcut test/test_valid.py::ValidConfigTest::test_missing_required_value_raises_error_on_validate test/test_valid.py::ValidConfigTest::test_nested_attribute_access test/test_valid.py::ValidConfigTest::test_nested_dict_template test/test_valid.py::ValidConfigTest::test_none_as_default test/test_valid.py::ValidConfigTest::test_undeclared_key_ignored_from_input test/test_valid.py::ValidConfigTest::test_undeclared_key_raises_keyerror test/test_valid.py::ValidConfigTest::test_validate_individual_value test/test_valid.py::ValidConfigTest::test_validate_simple_dict test/test_valid.py::ValidConfigTest::test_wrong_type_raises_error_on_validate test/test_valid.py::AsTemplateTest::test_concrete_int_as_template test/test_valid.py::AsTemplateTest::test_concrete_string_as_template test/test_valid.py::AsTemplateTest::test_dict_as_template test/test_valid.py::AsTemplateTest::test_dict_type_as_template test/test_valid.py::AsTemplateTest::test_enum_type_as_template test/test_valid.py::AsTemplateTest::test_float_type_as_tempalte test/test_valid.py::AsTemplateTest::test_list_as_template test/test_valid.py::AsTemplateTest::test_list_type_as_template test/test_valid.py::AsTemplateTest::test_nested_dict_as_template test/test_valid.py::AsTemplateTest::test_none_as_template test/test_valid.py::AsTemplateTest::test_other_type_as_template test/test_valid.py::AsTemplateTest::test_plain_int_as_template test/test_valid.py::AsTemplateTest::test_plain_string_as_template test/test_valid.py::AsTemplateTest::test_set_as_template test/test_valid.py::AsTemplateTest::test_set_type_as_template test/test_valid.py::StringTemplateTest::test_check_string_type test/test_valid.py::StringTemplateTest::test_pattern_matching test/test_valid.py::StringTemplateTest::test_string_default_shortcut test/test_valid.py::StringTemplateTest::test_string_default_value test/test_valid.py::StringTemplateTest::test_string_template_shortcut test/test_valid.py::StringTemplateTest::test_validate_string test/test_valid.py::NumberTest::test_validate_float_as_number test/test_valid.py::NumberTest::test_validate_int_as_number test/test_valid.py::NumberTest::test_validate_string_as_number test/test_valid.py::ChoiceTest::test_validate_bad_choice_in_dict test/test_valid.py::ChoiceTest::test_validate_bad_choice_in_list test/test_valid.py::ChoiceTest::test_validate_good_choice_in_dict test/test_valid.py::ChoiceTest::test_validate_good_choice_in_list test/test_valid.py::OneOfTest::test_default_value test/test_valid.py::OneOfTest::test_validate_bad_template test/test_valid.py::OneOfTest::test_validate_first_good_choice_in_list test/test_valid.py::OneOfTest::test_validate_good_choice_in_list test/test_valid.py::OneOfTest::test_validate_no_choice_in_list test/test_valid.py::StrSeqTest::test_invalid_sequence_type test/test_valid.py::StrSeqTest::test_invalid_type test/test_valid.py::StrSeqTest::test_string_list test/test_valid.py::StrSeqTest::test_string_tuple test/test_valid.py::StrSeqTest::test_whitespace_separated_string test/test_valid.py::FilenameTest::test_filename_relative_to_self test/test_valid.py::FilenameTest::test_filename_relative_to_sibling test/test_valid.py::FilenameTest::test_filename_relative_to_sibling_needs_siblings test/test_valid.py::FilenameTest::test_filename_relative_to_sibling_needs_template test/test_valid.py::FilenameTest::test_filename_relative_to_sibling_with_recursion test/test_valid.py::FilenameTest::test_filename_relative_to_working_dir test/test_valid.py::FilenameTest::test_filename_with_default_source test/test_valid.py::FilenameTest::test_filename_with_file_source test/test_valid.py::FilenameTest::test_filename_with_non_file_source test/test_valid.py::FilenameTest::test_filename_working_dir_overrides_sibling test/test_valid.py::FilenameTest::test_filename_wrong_type test/test_valid.py::BaseTemplateTest::test_base_template_accepts_any_value test/test_valid.py::BaseTemplateTest::test_base_template_required test/test_valid.py::BaseTemplateTest::test_base_template_with_default test/test_valid.py::TypeTemplateTest::test_correct_type test/test_valid.py::TypeTemplateTest::test_default_value test/test_valid.py::TypeTemplateTest::test_incorrect_type test/test_valid.py::TypeTemplateTest::test_missing_required_value test/test_valid.py::SequenceTest::test_dict_list test/test_valid.py::SequenceTest::test_int_list test/test_valid.py::SequenceTest::test_invalid_item