                     }
                     p = p + 1
                     n = n * 10 + val
-                case asciiPeriod, asciiLowerE: // . e
+                case asciiPeriod, asciiLowerE, asciiUpperE: // . e E
                     // Slow path: JSON allows floating-point notation for integers
                     p = start
                     if let d = try parseBareDouble(p: &p, end: end) {

                case asciiZero...asciiNine: // 0...9
                    // leading '0' forbidden unless it is the only digit
                    throw JSONDecodingError.leadingZero
                case asciiPeriod, asciiLowerE: // . e
                    // Slow path: JSON numbers can be written in floating-point notation
                    p = start
                    if let d = try parseBareDouble(p: &p, end: end) {

private let asciiUpperA = UInt8(ascii: "A")
private let asciiLowerB = UInt8(ascii: "b")
private let asciiLowerE = UInt8(ascii: "e")
private let asciiUpperE = UInt8(ascii: "E")
private let asciiLowerF = UInt8(ascii: "f")
private let asciiUpperI = UInt8(ascii: "I")
private let asciiLowerL = UInt8(ascii: "l")
