         guard let value = self.value else {
             return ""
         }
-        if let unit = self.unit {
-            return "\(value) \(unit)"
+        if let formatter = self.formatter,
+            let string = formatter.string(for: value)
+        {
+            return string
         }
         return value.description
     }

            label: label,
            placeholder: placeholder,
            value: intValue,
            unit: unit,
            minimum: minimum,
            maximum: maximum
        )
    }

    public init(label: String, placeholder: String, value: Int?, isRequired: Bool = false, autoCorrect: Bool = false, unit: String? = nil, minimum: Int = 0, maximum: Int = Int.max) {
        self.label = label
        self.placeholder = placeholder
        self.value = value
        self.originalValue = value
        self.minimumValue = minimum
        self.maximumValue = maximum
        self.unit = unit
        self.isRequired = isRequired
        self.autoCorrect = autoCorrect
    }

    public let originalValue: Int?
    public let minimumValue: Int
    public let maximumValue: Int
    public let formatter: Formatter?
    public var value: Int?

    public convenience init(label: String, placeholder: String, value: String?, isRequired: Bool = false, formatter: Formatter? = nil, minimum: Int = 0, maximum: Int = Int.max) {
        var intValue: Int? = nil
        if let value = value {
            intValue = Int(value)
