Як отримати математичну константу PI у Свіфті


153

Я намагаюся знайти спосіб включити константу PI у свій код Swift . Я вже знайшов допомогу в іншому відповіді, на import Darwinякий я знаю , дає мені доступ до функцій C .

Я також перевірив Mathпакет Darwinі натрапив на наступну декларацію:

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

Отже, я припускаю, що в коді є спосіб використання PI, я просто не знаю як ...

Відповіді:


282

З Swift 3 і 4 pi тепер визначається як статична змінна для типів чисел з плаваючою комою Double, Floatі CGFloat, отже, більше не потрібно жодного конкретного імпорту:

Double.pi
Float.pi
CGFloat.pi

Також зауважте, що .piкомпілятор може зробити висновок про фактичний тип . Так, у ситуаціях, коли з контексту зрозуміло, що ви використовуєте, наприклад CGFloat, ви можете просто використовувати .pi(завдяки @Qbyte та @rickster, що вказали це в коментарях).

Для старих версій Swift :

M_PIспочатку визначено в, Darwinале також міститься в Foundationі UIKit, тому імпорт будь-якого з них надасть вам правильний доступ.

import Darwin // or Foundation or UIKit

let pi = M_PI

Примітка: Як зазначається в коментарях, pi також може бути використаний як символ Unicode в Swift, так що ви можете також зробити

let π = M_PI

alt + p- це ярлик (на клавіатурах США), який створить πсимвол unicode.


5
Оскільки Swift підтримує Unicode, ви можете також зробити цеvar π = M_PI
Кирилл

23
Оскільки pi - константа, здається збоченою заявити про це як a var. Звичайно let pi = M_PI?
Grimxn

2
Вам не потрібно нічого особливого - Alt-p є пі за замовчуванням.
Grimxn

3
Я вважаю, Alt-P на американській клавіатурі? Однозначно не на моєму (де воно викликає вікно друку). Будь ласка, не пишіть у коді випадкові символи унікоду. Я не хочу, щоб мої колеги гуглили, як писати π щоразу, коли вони знаходять це в коді.
Султан

2
Лише зауваження: Якщо тип Пі можна зробити висновок, ви можете також використовувати .piзамість довгої форми. Напр.let x = CGFloat(42) * .pi
Кбайт

15

import Darwin не потрібно, всі M_x видно з import Foundation

(Версія Xcode 6.4 (6E35b))


1

попередження: 'M_PI' застаріло: Будь ласка, використовуйте 'Double.pi' або '.pi', щоб отримати значення правильного типу та уникати кастингу.

дивно, але .pi також чудово працює. M_PI застаріло, як у Swift 4.2.1, Xcode 10.1, що є поточною версією, яку я використовую. Так, використовуйте .pi або Double.pi

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.