Bao gồm một số phép tính trong mã của tôi, tôi đã tình cờ gặp "PI" không đổi. Ít nhất là trong phiên bản Xcode của tôi 4.6, tôi có thể sử dụng một trong hai. Nhưng sự khác biệt giữa pi
và M_PI
là gì? Tài liệu hướng dẫn rất ít về chủ đề đó.Sự khác biệt giữa "pi" và "M_PI" trong objc
Trả lời
pi
được định nghĩa trong các tiêu đề "CarbonCore.framework" như
extern const double_t pi __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);
nhưng đánh dấu là "phản đối". Tôi cho rằng đó là một sự phản đối từ các khung Carbon cũ hơn.
M_PI
được định nghĩa là một macro
#define M_PI 3.14159265358979323846264338327950288
trong math.h
và một phần của tiêu chuẩn POSIX.
Các giá trị giống nhau, nhưng bạn nên sử dụng M_PI
vì lý do di chuyển.
(Và đối với Swift, thấy How to get mathemical PI constant in Swift.)
Cảm ơn câu trả lời và WOW! Đó là điều tốt để biết không sử dụng 'pi' (tôi luôn làm như vậy). Tôi có thể thẳng bao gồm 'M_PI' trong mã của tôi hay tôi cần phải' #import ... 'một lớp đặc biệt nữa. – JFS
Nếu bạn đã nhập tiêu đề Foundation hoặc CoreFoundation thì bạn có thể sử dụng nó, vì chúng bao gồm '
Xin cảm ơn và chúc bạn may mắn! – JFS
M_PI là đủ gần để xấp xỉ chu vi của thiên hà (và có lẽ là cả vũ trụ) trong vòng vài dặm, vì vậy tôi sẽ không bị mất ngủ hơn nó.
'pi' không phải là hằng số chuẩn trong tiêu đề Cocoa mà tôi đã đưa vào, cũng không phải là' PI'. 'M_PI' là định nghĩa chuẩn từ math.h, và sẽ ổn cho hầu hết các mục đích. –
@BenZotto: 'M_PI' là một posix-ism, không phải là một phần của tiêu chuẩn C. –
@StephenCanon: Đúng vậy. Tôi có nghĩa là "tiêu chuẩn" như trong "tất cả mọi người sử dụng". :) –