2017-09-04 3 views
0

Wie konvertiert man diesen Typ von String "8.37" auf seinen Dezimalwert 8.37? Ich verwende Swift 4.Wie konvertiert man eine numerische Zeichenreferenz in Swift in eine Dezimalzahl?

Ich habe versucht:

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)

Antwort

0

Es gibt keinen geraden Weg nach vorn (zumindest meines Wissens). Aber Sie können etwas wie unten tun, um den Wert zu erhalten. Bitte beachten Sie, dass der folgende Code in Swift 3 ist. Möglicherweise müssen Sie die Syntax ändern.

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 
+0

Danke! Tatsächlich funktioniert es in Swift 3, aber ich habe einen Fehler in Swift 4, selbst nachdem ich die vorgeschlagenen Korrekturen angewendet habe. Der feste Code: '[...] let Optionen: [String: Beliebige] = [NSAttributedString.DocumentAttributeKey.documentType.rawValue: NSAttributedString.DocumentType.html] [...]' Der Fehler in Zeile 6: "Wert des Typs '[String: Any]' 'kann nicht in den erwarteten Argumenttyp' [NSAttributedString.DocumentReadingOptionKey: Any] '" konvertiert werden –

+0

Versuchen Sie,' let options: [String: Any] = [.documentType: NSAttributedString.DocumentType.html] zu verwenden ] ' – Malik

+0

Leider ersetzt 'let Optionen: [String: Any] = [NSAttributedString.DocumentAttributeKey.documentType.rawValue: NSAttributedString.DocumentType.html]' mit 'let Optionen: [String: Any] = [.documentType : NSAttributedString.DocumentType.html] 'hat nicht funktioniert. Ich habe diese Fehlermeldung zusätzlich zu der anderen: "Typ 'String' hat kein Mitglied 'DocumentType'" –

Verwandte Themen