Cara mendapatkan pi matematika konstan di Swift

153

Saya mencoba mencari cara untuk memasukkan konstanta PI dalam kode Swift saya . Saya sudah menemukan bantuan dalam jawaban lain, untuk import Darwinyang saya tahu memberi saya akses ke fungsi C .

Saya juga memeriksa Math paket Darwindan menemukan deklarasi berikut:

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

Jadi, saya berasumsi ada cara untuk menggunakan PI dalam kode, saya tidak tahu caranya ...

nburk
sumber

Jawaban:

282

Dengan Swift 3 & 4 , pi sekarang didefinisikan sebagai variabel statis pada tipe angka floating point Double, Floatdan CGFloat, jadi tidak ada lagi impor khusus yang diperlukan:

Double.pi
Float.pi
CGFloat.pi

Perhatikan juga bahwa tipe aktual .pidapat disimpulkan oleh kompiler. Jadi, dalam situasi di mana jelas dari konteks yang Anda gunakan misalnya CGFloat, Anda bisa menggunakannya.pi (terima kasih kepada @Qbyte dan @rickster untuk menunjukkannya di komentar).

Untuk versi Swift yang lebih lama :

M_PIpada awalnya didefinisikan Darwintetapi juga terkandung dalam Foundationdan UIKit, jadi mengimpor semua ini akan memberi Anda akses yang tepat.

import Darwin // or Foundation or UIKit

let pi = M_PI

Catatan: Seperti disebutkan dalam komentar, pi juga dapat digunakan sebagai karakter unicode di Swift, jadi sebaiknya Anda lakukan juga

let π = M_PI

alt + padalah jalan pintas (di keyboard US) yang akan membuat πkarakter unicode.

nburk
sumber
5
Ketika Swift mendukung Unicode, Anda juga bisa melakukannyavar π = M_PI
Cyrille
23
Karena pi adalah konstanta, maka agak salah untuk menyatakannya sebagai a var. Tentunya let pi = M_PI?
Grimxn
2
Anda tidak memerlukan sesuatu yang istimewa - Alt-p adalah pi secara default.
Grimxn
3
Alt-P pada keyboard AS, saya kira? Jelas bukan milik saya (di mana ia memanggil jendela cetak). Tolong, tolong, jangan menulis karakter unicode acak dalam kode. Saya tidak ingin kolega saya googling cara menulis π setiap kali mereka menemukannya dalam kode.
Sulthan
2
Hanya sebuah catatan: Jika jenis Pi dapat disimpulkan, Anda juga dapat menggunakan .pibukan formulir panjang. Misalnyalet x = CGFloat(42) * .pi
Qbyte
15

import Darwin tidak diperlukan semua M_x terlihat dengan import Foundation

(Xcode Versi 6.4 (6E35b))

Guyvo
sumber
1

peringatan: 'M_PI' sudah usang: Silakan gunakan 'Double.pi' atau '.pi' untuk mendapatkan nilai dari jenis yang benar dan menghindari casting.

Secara mengejutkan, .pi juga berfungsi dengan baik. M_PI sudah tidak digunakan lagi pada Swift 4.2.1, Xcode 10.1, yang merupakan versi saat ini yang saya gunakan. SO, Gunakan .pi, atau Double.pi

Sree
sumber