Restrict format presentation types to those specified in the 'Standard Format Specifiers' section of PEP 3101.
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index 0de65cb..b9ad8c5 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -133,13 +133,10 @@
         self.assertEqual(format(0.01, ''), '0.01')
         self.assertEqual(format(0.01, 'g'), '0.01')
 
-        self.assertEqual(format(0, 'f'), '0.000000')
 
         self.assertEqual(format(1.0, 'f'), '1.000000')
-        self.assertEqual(format(1, 'f'), '1.000000')
 
         self.assertEqual(format(-1.0, 'f'), '-1.000000')
-        self.assertEqual(format(-1, 'f'), '-1.000000')
 
         self.assertEqual(format( 1.0, ' f'), ' 1.000000')
         self.assertEqual(format(-1.0, ' f'), '-1.000000')
@@ -152,6 +149,18 @@
         # conversion to string should fail
         self.assertRaises(ValueError, format, 3.0, "s")
 
+        # other format specifiers shouldn't work on floats,
+        #  in particular int specifiers
+        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
+                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
+            if not format_spec in 'eEfFgGn%':
+                self.assertRaises(ValueError, format, 0.0, format_spec)
+                self.assertRaises(ValueError, format, 1.0, format_spec)
+                self.assertRaises(ValueError, format, -1.0, format_spec)
+                self.assertRaises(ValueError, format, 1e100, format_spec)
+                self.assertRaises(ValueError, format, -1e100, format_spec)
+                self.assertRaises(ValueError, format, 1e-100, format_spec)
+                self.assertRaises(ValueError, format, -1e-100, format_spec)
 
 class ReprTestCase(unittest.TestCase):
     def test_repr(self):
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index 18bb7a4..2c9e2d0 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -526,16 +526,21 @@
         self.assertEqual(format(1234, "+b"), "+10011010010")
         self.assertEqual(format(-1234, "+b"), "-10011010010")
 
-        # conversion to float
-        self.assertEqual(format(0, 'f'), '0.000000')
-
         # make sure these are errors
         self.assertRaises(ValueError, format, 3, "1.3")  # precision disallowed
         self.assertRaises(ValueError, format, 3, "+c")   # sign not allowed
                                                          # with 'c'
-        self.assertRaises(ValueError, format, 3, "R")    # bogus format type
-        # conversion to string should fail
-        self.assertRaises(ValueError, format, 3, "s")
+        # other format specifiers shouldn't work on ints,
+        #  in particular float and string specifiers
+        for format_spec in ([chr(x) for x in range(ord('a'), ord('z')+1)] +
+                            [chr(x) for x in range(ord('A'), ord('Z')+1)]):
+            if not format_spec in 'bcdoxX':
+                self.assertRaises(ValueError, format, 0, format_spec)
+                self.assertRaises(ValueError, format, 1, format_spec)
+                self.assertRaises(ValueError, format, -1, format_spec)
+                self.assertRaises(ValueError, format, 2**100, format_spec)
+                self.assertRaises(ValueError, format, -(2**100), format_spec)
+
 
     def test_nan_inf(self):
         self.assertRaises(OverflowError, int, float('inf'))