FloatValue与textField中的2位小数

FloatValue与textField中的2位小数

在我的Core Data应用程序中,我从3个UITexFields中保存了3个浮点数。为此,我必须将它们转换为字符串。

现在的问题是,这些值将四舍五入为.0

我该怎么做?

nyTankning.liter = (textFieldLiter.text as NSString).floatValue
nyTankning.kronor = (textFieldKronor.text as NSString).floatValue
nyTankning.literpris = (textFieldLiterpris.text as NSString).floatValue

最佳答案

那里的问题是您尝试使用逗号“,”而不是句点“。”

struct Number {
    static let formatter = NumberFormatter()
}
extension String {
    var converted: String? {
        return fractionDigits()
    }
    var doubleValue: Double? {
        return Number.formatter.number(from: self)?.doubleValue
    }
    var floatValue: Float? {
        return Number.formatter.number(from: self)?.floatValue
    }
    func fractionDigits(min: Int = 2, max: Int = 2) -> String? {
        Number.formatter.decimalSeparator = "."
        if let result = Number.formatter.number(from: self) {
            Number.formatter.minimumFractionDigits = min
            Number.formatter.maximumFractionDigits = max
            return Number.formatter.string(from: result)
        } else {
            Number.formatter.decimalSeparator = ","
            if let result = Number.formatter.number(from: self) {
                Number.formatter.minimumFractionDigits = min
                Number.formatter.maximumFractionDigits = max
                return Number.formatter.string(from: result)
            }
        }
        return nil
    }
}
"1,1222".converted              // "1.12"
"2".converted                   // "2.00"

"1,1222".converted?.doubleValue  // 1.12
"2".converted?.doubleValue       // 2.0

"1,1222".converted?.floatValue   // 1.12000000476837
"2".converted?.floatValue        // 2.0

"1.1222".converted              // "1.12"
"1.1222".converted?.doubleValue  // 1.12
"1.254".converted?.floatValue    // 1.25

"1.254".fractionDigits(min: 1, max: 2) // "1.25"
"1.2".fractionDigits(min: 1, max: 2)   // "1.2"

关于ios - FloatValue与textField中的2位小数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27931702/

10-11 14:20