             return "0"
         }
         var copy = self
-        let ZERO : CChar = 0x30 // ASCII '0' == 0x30
-        let decimalChar : CChar = 0x2e // ASCII '.' == 0x2e
-        let MINUS : CChar = 0x2d // ASCII '-' == 0x2d
-
-        let bufferSize = 200 // max value : 39+128+sign+decimalpoint
+        let ZERO: CChar = 0x30 // ASCII '0' == 0x30
+        let DECIMALPOINT: CChar = 0x2e // ASCII '.' == 0x2e
+        let MINUS: CChar = 0x2d // ASCII '-' == 0x2d
+
+        let bufferSize = 200 // Max value: 39 + 128 + sign + decimal point
         var buffer = Array<CChar>(repeating: 0, count: bufferSize)
 
         var i = bufferSize - 1

    public mutating func formTruncatingRemainder(dividingBy other: Decimal) { fatalError("Decimal does not yet fully adopt FloatingPoint") }
}

extension Decimal: CustomStringConvertible {
    public init?(string: String, locale: Locale? = nil) {
        let scan = Scanner(string: string)
        scan.locale = locale
        var theDecimal = Decimal()
        if !scan.scanDecimal(&theDecimal) {
            return nil
        }
        self = theDecimal
    }

    public var description: String {
        if self.isNaN {
            return "NaN"

            var remainder: UInt16 = 0
            if copy._exponent == 0 {
                i -= 1
                buffer[i] = DECIMALPOINT
            }
            copy._exponent += 1
            (remainder, _) = divideByShort(&copy, 10)
            i -= 1
            buffer[i] = Int8(remainder) + ZERO
        }
