如何在Swift中将数字字符引用转换为小数?

时间:2017-09-04 06:38:24

标签: swift character decimal data-conversion

如何将此类型的字符串"8.37"转换为其小数值8.37? 我使用的是Swift 4。

我试过了:

extension String {

func hexToFloat() -> Float {
    var toInt = Int32(truncatingIfNeeded: strtol(self, nil, 16))
    var float:Float32!
    memcpy(&float, &toInt, MemoryLayout.size(ofValue: float))
    return float
}
}

[...]

let myString = "8.37"
let myDecimal = myString.hexToFloat()
print(myDecimal) // prints 0.0

(From here)

1 个答案:

答案 0 :(得分:0)

没有直接的方式(至少据我所知)。但你可以做下面的事情来获得价值。请注意,以下代码位于 Swift 3 中。您可能需要更改语法。

extension String {    
    func hexToFloat() -> Float {
        let data = myString.data(using: .utf8)
        let options: [String: Any] = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
        do {
            let attributedString = try NSAttributedString(data: data!, options: options, documentAttributes: nil)
            return Float(attributedString.string)!
        } catch {
            return 0
        }
    }
}

let myString = "8.37"
let myDecimal = myString.hexToFloat()
print(myDecimal) // prints 8.37