diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 47bf42c..5a20969 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1223,9 +1223,9 @@
 +------------+-----------------------------------------------------+-------+
 | ``'E'``    | Floating point exponential format (uppercase).      | \(3)  |
 +------------+-----------------------------------------------------+-------+
-| ``'f'``    | Floating point decimal format.                      | \(3)  |
+| ``'f'``    | Floating point decimal format (lowercase).          | \(3)  |
 +------------+-----------------------------------------------------+-------+
-| ``'F'``    | Floating point decimal format.                      | \(3)  |
+| ``'F'``    | Floating point decimal format (uppercase).          | \(3)  |
 +------------+-----------------------------------------------------+-------+
 | ``'g'``    | Floating point format. Uses lowercase exponential   | \(4)  |
 |            | format if exponent is less than -4 or not less than |       |
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index 07a2c4b..1946979 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -402,13 +402,14 @@
    | ``'e'`` | Exponent notation. Prints the number in scientific       |
    |         | notation using the letter 'e' to indicate the exponent.  |
    +---------+----------------------------------------------------------+
-   | ``'E'`` | Exponent notation. Same as ``'e'`` except it uses an     |
-   |         | upper case 'E' as the separator character.               |
+   | ``'E'`` | Exponent notation. Same as ``'e'`` except it converts    |
+   |         | the number to upper case.                                |
    +---------+----------------------------------------------------------+
    | ``'f'`` | Fixed point. Displays the number as a fixed-point        |
    |         | number.                                                  |
    +---------+----------------------------------------------------------+
-   | ``'F'`` | Fixed point. Same as ``'f'``.                            |
+   | ``'F'`` | Fixed point. Same as ``'f'`` except it converts the      |
+   |         | number to upper case.                                    |
    +---------+----------------------------------------------------------+
    | ``'g'`` | General format. This prints the number as a fixed-point  |
    |         | number, unless the number is too large, in which case    |
diff --git a/Lib/test/test_format.py b/Lib/test/test_format.py
index 6d32e86..30b07d8 100644
--- a/Lib/test/test_format.py
+++ b/Lib/test/test_format.py
@@ -79,6 +79,17 @@
         testformat("%#.*f", (110, -1.e+100/3.))
         testformat("%#.*F", (110, -1.e+100/3.))
         overflowrequired = 0
+        # check for %f and %F
+        testformat("%f", (1.0,), "1.000000")
+        testformat("%F", (1.0,), "1.000000")
+        testformat("%f", (1e100,), "1e+100")
+        testformat("%F", (1e100,), "1E+100")
+        testformat("%f", (1e100,), "1e+100")
+        testformat("%F", (1e100,), "1E+100")
+        testformat("%f", (float('nan'),), "nan")
+        testformat("%F", (float('nan'),), "NAN")
+        testformat("%f", (float('inf'),), "inf")
+        testformat("%F", (float('inf'),), "INF")
         # Formatting of integers. Overflow is not ok
         overflowok = 0
         testformat("%x", 10, "a")
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index 1b8e605..4db1184 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -514,9 +514,17 @@
         test( 1.0, '+f', '+1.000000')
         test(-1.0, '+f', '-1.000000')
         test(1.1234e90, 'f', '1.1234e+90')
-        test(1.1234e90, 'F', '1.1234e+90')
+        test(1.1234e90, 'F', '1.1234E+90')
         test(1.1234e200, 'f', '1.1234e+200')
-        test(1.1234e200, 'F', '1.1234e+200')
+        test(1.1234e200, 'F', '1.1234E+200')
+        test(1e100, 'x<20f', '1e+100xxxxxxxxxxxxxx')
+        test(1e100, 'x<20F', '1E+100xxxxxxxxxxxxxx')
+        test(float('nan'), 'f', 'nan')
+        test(float('nan'), 'F', 'NAN')
+        test(float('inf'), 'f', 'inf')
+        test(float('inf'), 'F', 'INF')
+        test(float('-inf'), 'f', '-inf')
+        test(float('-inf'), 'F', '-INF')
 
         test( 1.0, 'e', '1.000000e+00')
         test(-1.0, 'e', '-1.000000e+00')
diff --git a/Misc/NEWS b/Misc/NEWS
index 5628940..232d5c3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #3382: Make '%F' and float.__format__('F') convert results
+  to uppercase.
+
 - Issue #3008: the float type has a new instance method 'float.hex'
   and a new class method 'float.fromhex' to convert floating-point
   numbers to and from hexadecimal strings, respectively.
diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h
index b964435..d8cb171 100644
--- a/Objects/stringlib/formatter.h
+++ b/Objects/stringlib/formatter.h
@@ -741,10 +741,6 @@
     /* first, do the conversion as 8-bit chars, using the platform's
        snprintf.  then, if needed, convert to unicode. */
 
-    /* 'F' is the same as 'f', per the PEP */
-    if (type == 'F')
-        type = 'f';
-
     x = PyFloat_AsDouble(value);
 
     if (x == -1.0 && PyErr_Occurred())
@@ -758,8 +754,12 @@
 
     if (precision < 0)
         precision = 6;
-    if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
-        type = 'g';
+    if ((type == 'f' || type == 'F') && (fabs(x) / 1e25) >= 1e25) {
+	if (type == 'f')
+	    type = 'g';
+	else
+	    type = 'G';
+    }
 
     /* cast "type", because if we're in unicode we need to pass a
        8-bit char.  this is safe, because we've restricted what "type"
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index b0b525a..85d838c 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -8588,8 +8588,12 @@
 	return -1;
     if (prec < 0)
 	prec = 6;
-    if (type == 'f' && (fabs(x) / 1e25) >= 1e25)
-	type = 'g';
+    if ((type == 'f' || type == 'F') && (fabs(x) / 1e25) >= 1e25) {
+        if (type == 'f')
+            type = 'g';
+        else
+            type = 'G';
+    }
     /* Worst case length calc to ensure no buffer overrun:
 
        'g' formats:
@@ -8608,7 +8612,8 @@
     */
     if (((type == 'g' || type == 'G') && 
           buflen <= (size_t)10 + (size_t)prec) ||
-	(type == 'f' && buflen <= (size_t)53 + (size_t)prec)) {
+	((type == 'f' || type == 'F')  &&
+          buflen <= (size_t)53 + (size_t)prec)) {
 	PyErr_SetString(PyExc_OverflowError,
 			"formatted float is too long (precision too large?)");
 	return -1;
@@ -9091,8 +9096,6 @@
 	    case 'F':
 	    case 'g':
 	    case 'G':
-		if (c == 'F')
-			c = 'f';
 		pbuf = formatbuf;
 		len = formatfloat(pbuf, sizeof(formatbuf)/sizeof(Py_UNICODE),
 			flags, prec, c, v);
