Comment obtenir la constante mathématique PI dans Swift

153

J'essaie de trouver un moyen d' inclure la constante PI dans mon code Swift . Je aide déjà trouvé dans une autre réponse, à import Darwince que je sais me donne accès à des fonctions C .

J'ai également vérifié le Mathcolis Darwinet suis tombé sur la déclaration suivante:

var M_PI: Double { get } /* pi */

Donc, je suppose qu'il existe un moyen d'utiliser PI dans le code, je ne sais tout simplement pas comment ...

nburk
la source

Réponses:

282

Avec Swift 3 & 4 , pi est désormais défini comme une variable statique sur les types de nombres à virgule flottante Double, Floatet CGFloat, par conséquent, aucune importation spécifique n'est plus nécessaire:

Double.pi
Float.pi
CGFloat.pi

Notez également que le type réel de .pipeut être déduit par le compilateur. Donc, dans les situations où cela ressort clairement du contexte que vous utilisez, par exemple CGFloat, vous pouvez simplement utiliser .pi(merci à @Qbyte et @rickster pour l'avoir souligné dans les commentaires).

Pour les anciennes versions de Swift :

M_PIest défini à l'origine dans Darwinmais est également contenu dans Foundationet UIKit, donc l'importation de l'un de ces éléments vous donnera le bon accès.

import Darwin // or Foundation or UIKit

let pi = M_PI

Remarque: comme indiqué dans les commentaires, pi peut également être utilisé comme caractère Unicode dans Swift, vous pouvez donc aussi bien le faire

let π = M_PI

alt + pest le raccourci (sur les claviers américains) qui créera le πcaractère unicode.

nburk
la source
5
Comme Swift prend en charge Unicode, vous pouvez également le fairevar π = M_PI
Cyrille
23
Comme pi est une constante, il semble pervers de le déclarer comme un var. Sûrement let pi = M_PI?
Grimxn
2
Vous n'avez besoin de rien de spécial - Alt-p est pi par défaut.
Grimxn
3
Alt-P sur un clavier américain, je suppose? Certainement pas sur le mien (où il appelle la fenêtre d'impression). S'il vous plaît, veuillez ne pas écrire de caractères Unicode aléatoires dans le code. Je ne veux pas que mes collègues cherchent sur Google comment écrire π chaque fois qu'ils le trouvent dans le code.
Sulthan
2
Juste une note: si le type de Pi peut être déduit, vous pouvez également l'utiliser à la .piplace de la forme longue. Par exemplelet x = CGFloat(42) * .pi
Qbyte
15

import Darwin n'est pas nécessaire tous les M_x sont visibles avec le import Foundation

(Xcode version 6.4 (6E35b))

Guyvo
la source
1

avertissement: «M_PI» est obsolète: veuillez utiliser «Double.pi» ou «.pi» pour obtenir la valeur du type correct et éviter la diffusion.

étonnamment, .pi fonctionne également très bien. M_PI est obsolète à partir de Swift 4.2.1, Xcode 10.1, qui est la version actuelle que j'utilise. SO, utilisez .pi ou Double.pi

Sree
la source