Open popeyelau opened 5 years ago
import Foundation extension Formatter { static let number = NumberFormatter() } extension FloatingPoint { func fractionDigits(min: Int = 2, max: Int = 2, roundingMode: NumberFormatter.RoundingMode = .down) -> String { Formatter.number.minimumFractionDigits = min Formatter.number.maximumFractionDigits = max Formatter.number.roundingMode = roundingMode Formatter.number.numberStyle = .decimal return Formatter.number.string(for: self) ?? "" } } extension String { var doubleValue: Double? { return Formatter.number.number(from: self)?.doubleValue } var intValue: Int? { return Formatter.number.number(from: self)?.intValue } var floatValue: Float? { return Formatter.number.number(from: self)?.floatValue } } let num = 1.4988 num.fractionDigits() //1.49 num.fractionDigits(min: 2, max: 3, roundingMode: .down) //1.498 num.fractionDigits(min: 2, max: 3, roundingMode: .up) //1.499 let str = "123.88" str.doubleValue //123.88 str.intValue //123 str.floatValue //123.88 str.floatValue?.fractionDigits(min: 1, max: 1, roundingMode: .up) //123.9