Supposons que j'ai un in Le passé, le code ci-dessus pourrait entraîner un double code> et je crée un int code> à partir du code> double code>: B = 3 code> si a code> était représenté en interne sous forme 3.999999999999999 code>. N'avons-nous pas à vous soucier de ce que ce soit à Swift? Quelle est la bonne façon de jeter un double à un int? P> p>
3 Réponses :
let roundedVal = round(a) var b = Int(roundedVal)
Vous devez utiliser le prototype double.rounded () code> avant de la jeter sur INT. Donc, un double nombre comme 3.99999999999 ... code> ou 4.000000000001 code> devient 4 code>:
Vous utilisez Initializer générique init (_:) < / Code> qui crée un entier de la valeur de point flottante donnée, arrondi vers zéro.
Donc, il y a un problème bien connu avec des types d'épargne basés sur des mathématiques à virgule flottante (voir Ce ). À cause de cela, votre Une solution est arrondir votre et ensuite rond en résultat en suivant la règle suivante p> à cet effet, vous pouvez utiliser Vous pouvez également utiliser un initalizer défables, car Si A code> peut être enregistré par exemple comme 3.99999999999999994 code>. Ensuite, si vous utilisez ce int code> initalizer à partir de ceci double code>, il crée int code> arrondi vers zéro ... ( 3 code >) p>
double code> avant de passer par int code> initialisateur à un endroit décimal p> < Pré> xxx pré> olded code> méthode avec FloatinantpointRoundingrule code> .ToneAreStorawayfromzero code> (qui est la valeur par défaut pour ce paramètre) p>
double code> est plus grand, alors int code> peut être, le code bloque p>
Ma principale question est que si j'ai un double aroctaire, cela pourrait être représenté comme 3.99999999, 4.00000000, ou 4.000000001, comme exemples. Donc, je cherche la bonne façon de faire double -> int. Je ne cherchais pas un moyen de définir une variable à 4!
@statguy Il n'y a rien de tel que bonne façon de faire double -> int code>. Choisissez une méthode d'arrondi.
.ToneAreStorawayfromzero CODE> est la règle d'arrondi par défaut, vous pouvez simplement écrire int (A.Rounded ()) code>
@Martinr à droite, merci. :-)
Si vous ne parlez pas d'arrondi, quelle est votre question?
Dupliqué possible de Comment convertir le double en int dans Swift
"Quelle est la bonne façon de jeter un double à un int?" Cela dépend uniquement de vos propres besoins.