web-dev-qa-db-fra.com

Quelle est la différence entre "pi" et "M_PI" dans objc

Y compris quelques mathématiques dans mon code, je suis tombé sur la constante "PI". Au moins dans mon Xcode version 4.6, je pourrais utiliser l'un ou l'autre. Mais quelle est la différence entre pi et M_PI? La documentation est un peu serrée sur ce sujet.

10
JFS

pi est défini dans les en-têtes "CarbonCore.framework" comme

extern const double_t pi  __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_NA, __IPHONE_NA);

mais marqué comme "obsolète". Je suppose qu’il s’agit d’une relique des anciens cadres Carbon.

M_PI est défini comme une macro

#define M_PI   3.14159265358979323846264338327950288

dans math.h et une partie de la norme POSIX.

Les valeurs sont identiques, mais vous devez utiliser M_PI pour des raisons de portabilité.

(Et pour Swift, voir Comment obtenir une constante mathématique en Swift .)

24
Martin R

M_PI est suffisamment proche pour se rapprocher de la circonférence de la galaxie (et probablement de tout l'univers) dans un rayon de quelques kilomètres, pour que je ne perde pas le sommeil à cause de cela.

1
Laserbeak