web-dev-qa-db-fra.com

Comment obtenir la constante PI mathématique dans Swift

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

J'ai également vérifié le package Math dans Darwin et suis tombé sur la déclaration suivante:

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

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

147
nburk

Avec Swift 3 & 4, pi est maintenant défini comme une variable statique dans les types de nombres à virgule flottante Double, Float et CGFloat, de sorte qu'aucune importation spécifique n'est effectuée. nécessaire plus:

Double.pi
Float.pi
CGFloat.pi

Notez également que le type actuel de .pi peut être déduit par le compilateur. Ainsi, dans les situations où il est clair, dans le contexte, que vous utilisez, par exemple. CGFloat, vous pouvez simplement utiliser .pi (merci à @Qbyte et à @rickster pour l'avoir signalé dans les commentaires).

Pour anciennes versions de Swift:

M_PI est défini à l'origine dans Darwin mais il est également contenu dans Foundation et UIKit, si vous importez ces éléments pour vous donner le droit d'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.

let π = M_PI

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

268
nburk

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

(Xcode Version 6.4 (6E35b))

15
Guyvo

avertissement: 'M_PI' est obsolète: veuillez utiliser 'Double.pi' ou '.pi' pour obtenir la valeur du type correct et éviter le transtypage.

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

1
Sree