วิธีรับค่าคงที่ทางคณิตศาสตร์ PI ใน Swift


153

ฉันกำลังพยายามที่จะหาวิธีการที่จะรวมถึงการคง PI ในรหัส ฉันพบแล้วความช่วยเหลือในคำตอบอื่นเพื่อimport Darwinที่ฉันรู้ให้ฉันเข้าถึงฟังก์ชั่น C

ฉันเช็คอินMathแพคเกจด้วยDarwinและเจอประกาศดังต่อไปนี้

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

ดังนั้นฉันคิดว่ามีวิธีใช้ PI ในรหัสฉันแค่ไม่รู้ว่า ...

คำตอบ:


282

กับสวิฟท์ที่ 3 และ 4 , ปี่ถูกกำหนดในขณะนี้เป็นตัวแปรคงที่บนลอยชนิดจำนวนจุด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
Cyrille

23
varในฐานะที่เป็นปี่เป็นค่าคงที่ดูเหมือนว่าดื้อรั้นที่จะประกาศว่ามันเป็น แน่นอนlet pi = M_PI?
Grimxn

2
คุณไม่ต้องการอะไรเป็นพิเศษ - Alt-p คือ pi ตามค่าเริ่มต้น
Grimxn

3
ฉันคิดว่า Alt-P บนคีย์บอร์ดสหรัฐอเมริกา ไม่แน่นอนในเหมือง (ที่จะเรียกหน้าต่างพิมพ์) ได้โปรดได้โปรดอย่าเขียนตัวอักษรยูนิโค้ดแบบสุ่มในรหัส ฉันไม่ต้องการให้เพื่อนร่วมงานของฉัน googling วิธีเขียนπทุกครั้งที่พบในโค้ด
Sulthan

2
เพียงทราบ: หากประเภทของ Pi สามารถอนุมานได้คุณยังสามารถใช้.piแทนรูปแบบยาว เช่นlet x = CGFloat(42) * .pi
Qbyte

15

import Darwin ไม่จำเป็นต้องใช้ M_x ทั้งหมดสามารถมองเห็นได้ด้วย import Foundation

(เวอร์ชั่น Xcode 6.4 (6E35b))


1

คำเตือน: 'M_PI' ไม่รองรับ: โปรดใช้ 'Double.pi' หรือ '.pi' เพื่อรับค่าประเภทที่ถูกต้องและหลีกเลี่ยงการส่ง

น่าประหลาดใจ. pii ยังใช้งานได้ดี M_PI เลิกใช้แล้วใน Swift 4.2.1, Xcode 10.1 ซึ่งเป็นเวอร์ชั่นปัจจุบันที่ฉันใช้อยู่ ดังนั้นใช้. pi หรือ. pi

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.