Ich möchte ein Float
in ein Int
in Swift konvertieren . Grundlegendes Casting wie dieses funktioniert nicht, da diese Typen im Gegensatz zu float
s und int
s in Objective-C keine Grundelemente sind
var float: Float = 2.2
var integer: Int = float as Float
Dies erzeugt jedoch die folgende Fehlermeldung:
'Float' kann nicht in 'Int' konvertiert werden
Irgendeine Idee, wie man Immobilien von Float
nach konvertiert Int
?
as
Bediener ist für das Herunterwerfen in Unterklassen vorgesehen. dh:UIView as UIButton
Antworten:
Sie können konvertieren
Float
zu ,Int
wie dies in Swift:Sie können dieses Ergebnis auch mit dem Kommentar von @ paulm erzielen:
quelle
var myIntValue = Int(myFloatValue)
funktioniert.Explizite Konvertierung
Die Konvertierung in Int verliert an Präzision (effektive Abrundung). Durch den Zugriff auf die Mathematikbibliotheken können Sie explizite Konvertierungen durchführen. Beispielsweise:
Wenn man will abrunden und konvertiert integer:
Ergebnis ist 10.
Wenn Sie wollte aufrunden zu integer und konvertieren:
Ergebnis ist 11.
Wenn Sie explizit auf die nächste Ganzzahl runden möchten
Ergebnis ist 11.
Im letzteren Fall mag dies pedantisch erscheinen, aber es ist semantisch klarer, da es keine implizite Konvertierung gibt ... wichtig, wenn Sie beispielsweise eine Signalverarbeitung durchführen.
quelle
round(10.5) == 11.0
Das Konvertieren ist einfach:
Aber es ist nicht sicher:
Will wegen eines schönen Absturzes:
Also habe ich eine Erweiterung erstellt, die den Überlauf behandelt:
Ich hoffe das kann jemandem helfen
quelle
Es gibt viele Möglichkeiten, Zahlen präzise zu runden. Sie sollten eventuell die Standardbibliotheksmethode von swift verwenden
rounded()
, um die Gleitkommazahl mit der gewünschten Genauigkeit zu runden.Um rund up Verwendung
.up
Regel:Um abzurunden , verwenden Sie die
.down
Regel:Um auf die nächste Ganzzahl zu runden, verwenden Sie die
.toNearestOrEven
Regel:Beachten Sie das folgende Beispiel:
quelle
So was:
quelle
Sie können eine ganzzahlige Darstellung Ihres Floats erhalten, indem Sie den Float an die Integer-Initialisierungsmethode übergeben.
Beispiel:
Beachten Sie, dass alle Zahlen nach dem Dezimalpunkt verloren gehen. Das heißt, 3.9 ist ein Int von 3 und 8.99999 ist eine ganze Zahl von 8.
quelle
Verwenden Sie eine Funktionsstilkonvertierung (im Abschnitt "Ganzzahl- und Gleitkommakonvertierung" von " The Swift Programming Language " [iTunes-Link]).
quelle
Sie können cast wie folgt eingeben:
quelle
Verwenden Sie einfach Typ Casting
Es wird ein Rundungswert angezeigt, z. B.: IntegerValue = 5 bedeutet, dass der Dezimalpunkt ein Verlust ist
quelle
quelle
Dies reicht aus, um von
float
nach zu konvertierenInt
quelle
Angenommen, Sie speichern den Float-Wert in
"X"
und den Integer-Wert in"Y"
.oder
quelle
Verwenden Sie
Int64
anstelle vonInt
.Int64
kann große int-Werte speichern.quelle
Float
einem Wertebereich größer alsInt
?