1. ã¯ããã«
Cèšèªã«ãããNaNã®æå³ãšéèŠæ§
Cèšèªã«ãããŠãæµ®åå°æ°ç¹æ°ãæ±ãéã«é¿ããŠéããªãã®ããNaNïŒNot a NumberïŒãã®ååšã§ããããã¯ãæ¥æ¬èªã§ãéæ°ããšãèš³ãããç¹å¥ãªæ°å€ã§ãããæ°å€ãšããŠæ±ããªãçµæã衚ãããã«äœ¿çšãããŸããããšãã°ããŒãé€ç®ãè² ã®æ°ã®å¹³æ¹æ ¹ãèšç®ããå Žåãªã©ãæ°åŠçã«å®çŸ©ã§ããªãåŠçã®çµæãšããŠNaNãè¿ãããŸãã
ãªãNaNãçè§£ããå¿ èŠãããã®ãïŒ
ããã°ã©ãã³ã°ã«ãããŠNaNã®ååšãæ£ããçè§£ããŠããªããšãæãã¬äžå ·åãåŒãèµ·ããåå ãšãªããŸããç¹ã«Cèšèªã§ã¯ãNaNãå«ãã 倿°ãšã®æ¯èŒãæŒç®ã«ãããŠäºæãã¬æåãçºçããå¯èœæ§ãããããããã£ãããšãã®æ§è³ªãçè§£ããé©åã«æ±ãããšãæ±ããããŸãã
ãŸããããŒã¿åŠçãæ°å€è§£æãè¡ãããã°ã©ã ã§ã¯ãç°åžžå€ãæ¬ æå€ãNaNãšããŠè¡šçŸããããšã§ãããŒã¿ã®æ£åœæ§ãä¿ã¡ãªããåŠçãç¶ç¶ããããšãå¯èœãšãªããŸãããã®ãããNaNã®æå³ãäœ¿ãæ¹ãåŠã¶ããšã¯ãåãªããšã©ãŒåŠçã«ãšã©ãŸãããå ç¢ãªãœãããŠã§ã¢éçºã«ãçŽçµããéèŠãªç¥èãªã®ã§ãã
æ¬èšäºã®ç®ç
æ¬èšäºã§ã¯ãCèšèªã«ãããNaNã®å®çŸ©ãçææ¹æ³ãå€å®æ¹æ³ãå®éã®æŽ»çšäºäŸãããã«ã¯NaNã«é¢é£ããæ³šæç¹ãŸã§ãç¶²çŸ çã«è§£èª¬ããŠãããŸããæµ®åå°æ°ç¹æ°ãæ±ãéã«å¿ é ãšãªããã®ç¥èããååŠè ããäžçŽè ãŸã§ããããããåŠã¹ãããæ§æããŠããŸãã
2. NaNãšã¯äœãïŒ
NaNïŒNot a NumberïŒã®åºæ¬å®çŸ©
NaNãšã¯ããNot a NumberïŒæ°å€ã§ã¯ãªãïŒãã®ç¥ã§ãããæ°å€åã®ããŒã¿ã®äžã«å«ãŸããç¹å¥ãªå€ã®ã²ãšã€ã§ããååã®éããæ°å€ãšããŠã®æå³ãæããªãããŒã¿ã衚ããŸããããã¯ãšã©ãŒã§ã¯ãªãããæ°å€ãšããŠæ±ããªãæŒç®çµæããæç€ºçã«è¡šçŸããããã®ä»çµã¿ã§ãã
ããšãã°ã以äžã®ãããªèšç®çµæã¯æ°åŠçã«å®çŸ©ã§ããŸããïŒ
- 0.0 / 0.0ïŒãŒãé€ç®ïŒ
- sqrt(-1.0)ïŒè² ã®å€ã®å¹³æ¹æ ¹ïŒ
- log(-5.0)ïŒè² ã®å€ã®å¯Ÿæ°ïŒ
ãã®ãããªå ŽåãCèšèªã®æšæºã©ã€ãã©ãªã䜿ããšãæ»ãå€ãšããŠNaNãè¿ãããããšã§ããã®èšç®çµæã¯æ°å€ãšããŠæå³ãæããªããããšã瀺ããŸãã
IEEE 754ã«ãããNaNã®äœçœ®ã¥ã
Cèšèªã®æµ®åå°æ°ç¹æ°ïŒfloat
ãdouble
ïŒã¯ãIEEE 754ãšããåœéèŠæ Œã«åºã¥ããŠèšèšãããŠããŸãããã®èŠæ Œã§ã¯ãæ°å€ã®ç¯å²ãè¶
ããçµæãç¡å¹ãªæŒç®çµæã衚çŸããããã«ãç¹å¥ãªããããã¿ãŒã³ãšããŠNaNãå®çŸ©ããŠããŸãã
IEEE 754ã§ã¯ãNaNã«ã¯å€§ããåããŠä»¥äžã®2çš®é¡ãååšããŸãïŒ
- quiet NaNïŒqNaNïŒïŒã»ãšãã©ã®ç°å¢ã§é垞䜿çšãããNaNãæŒç®æã«ãšã©ãŒãçºçããããNaNãšããŠåŠçãããŸãã
- signaling NaNïŒsNaNïŒïŒæ¬æ¥ã¯äŸå€åŠçãããªã¬ãŒããããã«ååšããããCèšèªã§ã¯å€ãã®å®è£ ã§ãµããŒããããŠããŸããã
Cèšèªã§äœ¿çšãããNaNã®å€ãã¯ããã®ãã¡ã®quiet NaNã§ãã
NaNã®äŒæç¹æ§
NaNã¯ãä»ã®å€ãšã®æŒç®ã«å·»ã蟌ãŸãããšããã®çµæãåºæ¬çã«NaNã«ãªããŸããããã¯ãNaNãå«ãã çµæã¯ä¿¡é Œã§ããªãããšããèãæ¹ã«åºã¥ããŠããŸãã
#include <stdio.h>
#include <math.h>
int main() {
double a = 0.0 / 0.0; // NaN
double b = a + 100.0; // ãããNaN
printf("%f
", b); // è¡šç€ºçµæ: nan
return 0;
}
ãã®ããã«ãäžåºŠNaNãçºçãããšãé£éçã«NaNãäŒæããŠãããããNaNã®æ€åºãšåŠçãéèŠãšãªãã®ã§ãã
3. Cèšèªã§ã®NaNã®çææ¹æ³
<math.h>
ã«ããNaNã®çæ
Cèšèªã§ã¯ãæµ®åå°æ°ç¹æ°ã®ç¹å¥ãªå€ã§ããNaNãçæããããã«ãæšæºã©ã€ãã©ãª <math.h>
ã«å®çŸ©ããã颿°ã䜿çšããã®ãäžè¬çã§ãã代衚çãªé¢æ°ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
nan(const char *tagp)
nanf(const char *tagp)
nanl(const char *tagp)
ãããã®é¢æ°ã¯ããããã double
ãfloat
ãlong double
åã®NaNå€ãè¿ããŸãã
#include <stdio.h>
#include <math.h>
int main() {
double x = nan("");
printf("%f
", x); // åºå: nan
return 0;
}
tagp
ãã©ã¡ãŒã¿ã®æå³
ãããã®é¢æ°ã«æž¡ã tagp
ãã©ã¡ãŒã¿ã¯ãNaNã«ä»äžããã¿ã°æ
å ±ãæå®ããããã®ãã®ã§ããããã°ã蚺æçšéã«å©çšãããããšããããŸãããã ããå®éã®æåããµããŒãã®æç¡ã¯å®è£
ïŒã³ã³ãã€ã©ãã©ã€ãã©ãªïŒã«äŸåãããããéåžžã¯ç©ºæåå ""
ãæå®ããã®ãäžè¬çã§ãã
double y = nan("payload");
ãã®ããã«æå®ããå Žåã§ããåºåãããNaNã«éãã¯ã»ãšãã©ãªããã¿ã°ãæç€ºçã«èŠãããããªåäœãããããšã¯çšã§ããããŒã¿ããªãã£ãéèŠããã®ã§ããã°ã""
ã䜿çšããã®ãç¡é£ã§ãã
颿°åŒã³åºã以å€ã§NaNãçæããæ¹æ³
äžéšã®ã±ãŒã¹ã§ã¯ãæç€ºçã«NaNãè¿ãæŒç®åŒãå©çšããŠNaNãçæããããšãå¯èœã§ããããšãã°ä»¥äžã®ããã«ã0.0ã0.0ã§å²ãããšã§NaNãçºçããŸãã
double nan_val = 0.0 / 0.0;
ãã ãããã®ãããªææ³ã¯å®è¡æãšã©ãŒãæªå®çŸ©åäœã«ãªãå¯èœæ§ããããããå®éçšã§ã¯nan("")
ã®ãããªé¢æ°ã䜿ã£ãŠæç€ºçã«çæããæ¹æ³ãæšå¥šãããŸãã
ã³ã³ãã€ã©äŸåã®æ³šæç¹
NaNã®çæãšåäœã¯ãCèšèªã®æšæºã«æºæ ãã€ã€ããç°å¢ã«ãã£ãŠè¥å¹²ã®éããåºãå¯èœæ§ããããŸããç¹ã«çµã¿èŸŒã¿éçºãªã©ãæµ®åå°æ°ç¹æŒç®ãç¹æ®ãªæ±ãããããŠããç°å¢ã§ã¯ãNaNãæ£ããæ±ããªãå Žåãããããããã¹ãç°å¢ã§ã®åäœç¢ºèªãéèŠã§ãã
4. NaNã®çš®é¡ãšç¹åŸŽ
quiet NaNïŒqNaNïŒãš signaling NaNïŒsNaNïŒã®éã
NaNã«ã¯ãquiet NaNïŒqNaNïŒ ãš signaling NaNïŒsNaNïŒ ã®2çš®é¡ããããŸããã©ã¡ãããéæ°ããæå³ããç¹å¥ãªå€ã§ããããã®çšéãšåäœã«ã¯æç¢ºãªéãããããŸãã
quiet NaNïŒqNaNïŒ
quiet NaN ã¯ãCèšèªã§æãäžè¬çã«äœ¿çšãããNaNã®åœ¢åŒã§ããååã®éããéããªNaNãã§ãããããã°ã©ã ã®å®è¡äžã«äœãéç¥ãããé»ã£ãŠæŒç®åŠçãç¶ããŸãã
äŸãã°ã次ã®ãããªã³ãŒãã§çæãããNaNã¯qNaNã§ãïŒ
#include <math.h>
double x = nan("");
ãã®qNaNã¯ãç°åžžãªæŒç®ãè¡ãããããšãæ°å€çã«ç€ºã圹å²ãæãããŸãããäŸå€ãçºçããããããã°ã©ã ãæ¢ããããšã¯ãããŸããã
signaling NaNïŒsNaNïŒ
signaling NaN ã¯ãæŒç®ã«äœ¿ãããéã«äŸå€ïŒFloating-Point ExceptionïŒãåŒãèµ·ããå¯èœæ§ã®ããNaNã§ããæ¬æ¥ã¯ãããã°ãéçºäžã®ç°åžžæ€åºã«äœ¿ãããããšãæå³ããŠããŸãã
ãã ããCèšèªæšæºã©ã€ãã©ãªãå€ãã®å®è£ ïŒGCCãClangãªã©ïŒã§ã¯ãsNaNã®æç€ºçãªçæãåãæ±ãããµããŒãããŠããªãããqNaNãšããŠåŠçãããŠããŸãããšãã»ãšãã©ã§ããsNaNã¯äž»ã«ããŒããŠã§ã¢ã¬ãã«ã§ã®å¶åŸ¡ã«é¢ä¿ããã¢ã»ã³ããªãäœã¬ãã«ã®æµ®åå°æ°ç¹æŒç®å¶åŸ¡ãæ±ããããªå Žåã«ç»å ŽããŸãã
NaNã®ããããã¿ãŒã³ãšèå¥
IEEE 754ã«æºæ ããCèšèªç°å¢ã§ã¯ãNaNã¯ç¹å®ã®ããããã¿ãŒã³ã«ãã£ãŠè¡šçŸãããŸããããšãã°ã64ãããã®double
åã«ãããŠãææ°éšããã¹ãŠ1ã§ä»®æ°éšãéãŒãã®ãšããNaNãšããŠèªèãããŸãã
笊å·ããã 1bit | ææ°éš 11bitïŒãã¹ãŠ1ïŒ | ä»®æ°éš 52bitïŒéãŒãïŒ
ãã®ãããæ§é ã«ãã£ãŠãNaNãã©ãããã³ã³ãã€ã©ãCPUãå€å®ããé©åãªæåïŒäŒæãåé¿ãèŠåïŒãå®è¡ã§ããããã«ãªã£ãŠããŸãã
NaNã®æ¯ãèãïŒäºæž¬äžèœãªæ¯èŒãšæŒç®
NaNã«ã¯ãæ°å€ãšã¯ç°ãªãç¬ç¹ã®æ§è³ªããããç¹ã«æ¯èŒæŒç®ã«ãããŠæ³šæãå¿ èŠã§ãã
double x = nan("");
if (x == x) {
printf("çãã
");
} else {
printf("çãããªã
");
}
// çµæïŒçãããªã
ãã®ããã«ãNaNã¯èªèº«ãšããçãããªããšããç¹æ§ãæã£ãŠãããããéåžžã®æ¯èŒæŒç®ã§ã¯æ±ããå°é£ã§ãããã®æ§è³ªããNaNã®ååšãæ€åºããéã«æå¹ã«åãäžæ¹ã§ããã°ã®åå ã«ããªãåŸãŸãã
5. NaNã®å€å®æ¹æ³
NaNã¯éåžžã®æ¯èŒã§ã¯å€å®ã§ããªã
NaNã®æãç¹ç°ãªæ§è³ªã®äžã€ã¯ããNaNã¯äœãšãçãããªãããšããç¹ã§ããããã¯ãèªèº«ãšã®æ¯èŒããæç«ããªããšããæ¥µç«¯ãªæ§è³ªãæã£ãŠãããéåžžã®==
æŒç®åã䜿ã£ãŠãNaNã®å€å®ã¯ã§ããŸããã
#include <math.h>
#include <stdio.h>
int main() {
double x = nan("");
if (x == x) {
// éåžžã®æ°å€ãªãtrueã«ãªããã
// NaNã®å Žåã¯false
}
}
ãã®ãããæ°å€ã®åäžæ§ã確èªããã³ãŒãã§NaNãæ··å ¥ããŠãããšãäºæããªãåå²ãçºçãããããªããŸããç¹ã«è€éãªifæãã«ãŒãã®äžã§äœ¿ããšããã°ã®æž©åºãšãªããããŸããã
isnan()
颿°ã®äœ¿çš
Cèšèªã§ã¯ãæµ®åå°æ°ç¹æ°ãNaNãã©ãããå€å®ããããã«ãæšæºã©ã€ãã©ãª <math.h>
ã«å®çŸ©ãããŠãã isnan()
颿°ã䜿çšããŸãã
#include <math.h>
#include <stdio.h>
int main() {
double x = 0.0 / 0.0; // NaN
if (isnan(x)) {
printf("xã¯NaNã§ã
");
} else {
printf("xã¯æ°å€ã§ã
");
}
return 0;
}
ãã®é¢æ°ã¯ãåŒæ°ãNaNã§ããã°çïŒéãŒãïŒããããã§ãªããã°åœïŒ0ïŒãè¿ããŸãã

åããŒã¿åãžã®å¯Ÿå¿
isnan()
㯠double
åã«å¯Ÿãã颿°ã§ãããåæ§ã®ãã¯ããšããŠä»¥äžã®é¢æ°ãçšæãããŠããŸãïŒç°å¢ã«ãã£ãŠã¯äœ¿ããªãå Žåãããã®ã§æ³šæãå¿
èŠã§ãïŒïŒ
isnanf()
:float
åã«å¯Ÿå¿isnanl()
:long double
åã«å¯Ÿå¿
å€å®æã®æ³šæç¹
NaNã¯ãèŠããªããã°ãã®åå ã«ãªãããšãå€ããç¹ã«ä»¥äžã®ãããªã±ãŒã¹ã«æ³šæãå¿ èŠã§ãïŒ
- æªåæåã®å€æ°ã«æµ®åå°æ°ç¹æŒç®ãè¡ã£ãå ŽåãNaNã«ãªãå¯èœæ§ããã
- å€éšã©ã€ãã©ãªãå ¥åºååŠçã§NaNãçŽã蟌ãããšããã
- æ¯èŒåŠçã§æ³å®å€ã®çµæãåºãéã«ã¯ããŸãNaNã®å¯èœæ§ãçãããš
NaNæ€åºã®ãã¹ããã©ã¯ãã£ã¹
- è€éãªæŒç®åŠçã®åŸã«ã¯
isnan()
ã§ç¢ºèªãå ¥ãã - ãããã°æã«
printf("%f", x)
ãªã©ã§è¡šç€ºããéã«ãnan
ããšåºåããããããã§ãã¯ãã - ããŒã¿ãå ¥ã倿°ã«ã¯åæå€ãæç€ºããNaNãæå³çã«äœ¿ãå Žé¢ã§ãã³ã¡ã³ããæ®ããŠãã
6. NaNã®æŽ»çšäŸ
ç°åžžå€ã»æ¬ æå€ã®è¡šçŸãšããŠã®NaN
Cèšèªãçšããæ°å€èšç®ã«ãããŠãNaNã¯ç°åžžå€ãæ¬ æå€ã®âãã©ã°âãšããŠæ©èœããŸããããšãã°ãã»ã³ãµãŒããŒã¿ããŠãŒã¶ãŒå ¥åãªã©ããã¹ãŠã®æ°å€ãæ£ããååŸã§ãããšã¯éããªãå Žé¢ã§ã¯ãéåžžã®æ°å€ã®ä»£ããã«NaNãä»£å ¥ããããšã§ããã®å€ã¯æå¹ã§ã¯ãªãããšæç€ºã§ããŸãã
double temperature = isnan(sensor_reading) ? nan("") : sensor_reading;
ãã®ããã«ãNaNãæŽ»çšããããšã§ãåŠçãäžæããã«ãåŸç¶ã®ã¹ãããã§ç°åžžå€ã ããæ€åºã»é€å€ããããšãã§ããŸãã
èšç®éäžã®ãšã©ãŒæ€åºçšãšããŠã®NaN
ããã°ã©ã å ã®æ°å€æŒç®ã«ãããŠãéäžã§æ³å®å€ã®æŒç®ïŒãŒãé€ç®ãå¹³æ¹æ ¹ã®è² å€ãªã©ïŒãçºçããå Žåã§ããå³åº§ã«ã¯ã©ãã·ã¥ãããã®ã§ã¯ãªããNaNãè¿ããŠèšç®ãç¶ç¶ããããšãå¯èœã§ããããã«ãããç°åžžãªããŒã¿ãã©ãã§çãŸããã®ããåŸãã远跡ã§ãããšããå©ç¹ããããŸãã
#include <math.h>
double safe_divide(double a, double b) {
if (b == 0.0) {
return nan(""); // ãšã©ãŒã ãåŠçã¯ç¶ç¶
}
return a / b;
}
ãã®ãããªã³ãŒãã¯ãä¿¡é Œæ§ã®é«ãæ°å€åŠçããã°ã©ã ã®åºæ¬æ§é ã«ãªããŸãã
ããŒã¿è§£æã»çµ±èšèšç®ã«ãããNaNã®å©çš
çµ±èšåŠçã§ã¯ãããŒã¿ã®æ¬ æïŒmissing valueïŒãNaNãšããŠæ±ãããšãå€ããããŸããCèšèªèªäœã«ã¯çµ±èšã©ã€ãã©ãªã¯æšæºè£ åãããŠããŸããããNaNã䜿ã£ãçµ±èšåŠçã®åºç€ã¯ã©ã€ãã©ãªéçºãããŒã¿åŠçã®å®è£ ã«ãããŠéèŠã§ãã
以äžã¯ãNaNãé€å€ããŠå¹³åãèšç®ããäžäŸã§ãïŒ
#include <math.h>
double mean_without_nan(double *arr, int size) {
double sum = 0.0;
int count = 0;
for (int i = 0; i < size; i++) {
if (!isnan(arr[i])) {
sum += arr[i];
count++;
}
}
return (count == 0) ? nan("") : (sum / count);
}
ãã®ããã«ãNaNãæŽ»çšããããšã§ããèšç®ã«å«ããªããšããæè»ãªåŠçããå¯èœã«ãªããŸãã
ãããã°çšéã§ã®NaNã®æ¿å ¥
ããã°ã©ã ã®åäœç¢ºèªäžã«ããããŠNaNãå ¥ããŠãããããã®å€ã«ã¢ã¯ã»ã¹ããããåé¡ãããããšããç®å°ãšããŠäœ¿ãææ³ããããŸããããã¯ãã¹ãå·¥çšã§æå³çã«äžæ£å€ãå ¥ããŠã·ã¹ãã ã®åå¿ãèŠãããã©ãŒã«ãã»ã€ã³ãžã§ã¯ã·ã§ã³ïŒæ éæ³šå ¥ïŒãã®äžç°ã§ãã
7. NaNã«é¢ããæ³šæç¹ãšèœãšã穎
æ¯èŒæŒç®ã§ã®èª€è§£ïŒNaNã¯ã©ã®å€ãšãçãããªã
NaNã®æå€§ã®ç¹åŸŽã§ãããæãå€ãã®èª€è§£ãæãã®ãããNaNã¯äœãšãçãããªãããšããæ§è³ªã§ããããã¯ãèªèº«ãšã®æ¯èŒããæç«ããªããšããæ¥µç«¯ãªæ§è³ªãæã£ãŠãããéåžžã®==
æŒç®åã䜿ã£ãŠãNaNã®å€å®ã¯ã§ããŸããã
double x = nan("");
if (x == x) {
// éåžžã®æ°å€ãªãtrueã«ãªããã
// NaNã®å Žåã¯false
}
ãã®ãããæ°å€ã®åäžæ§ã確èªããã³ãŒãã§NaNãæ··å ¥ããŠãããšãäºæããªãåå²ãçºçãããããªããŸããç¹ã«è€éãªifæãã«ãŒãã®äžã§äœ¿ããšããã°ã®æž©åºãšãªããããŸããã
NaNãå«ãæŒç®ã®çµæã¯ãã¹ãŠNaNã«ãªã
NaNã¯âäŒææ§âããããã©ã®ãããªæ°å€ãšæŒç®ããŠãåºæ¬çã«ã¯çµæãNaNã«ãªããŸããããšãã°ä»¥äžã®ãããªæŒç®ã¯ãã¹ãŠNaNãè¿ããŸãã
double a = nan("");
double b = 100.0;
double result = a + b; // result 㯠NaN
ãã®ç¹æ§ãçè§£ããã«æŒç®ãç¶ãããšãããã°ã©ã ã®åŸåã§çªç¶ãã¹ãŠã®å€ãNaNã«ãªã£ãŠãããšãã£ãäºæ ãèµ·ããåŸãŸãã
NaNãæ··å ¥ããŠãã¯ã©ãã·ã¥ããªãããšãéã«åé¡
NaNã¯Cèšèªã«ãããŠãäŸå€ãçºçãããªããããšãäžè¬çã§ããã€ãŸããããã°ã©ã ãç°åžžãªæŒç®ãããŠããšã©ãŒãšããŠæ€åºããããéãã«å®è¡ãç¶ç¶ãããã®ã§ãã
ãããåå ã§ãæ°ã¥ããªããã¡ã«ç°åžžãªå€ãæ±ãç¶ãããã°ã®çºèŠãé ãããšããèœãšã穎ã«ç¹ãããŸãã察çãšããŠã¯ïŒ
- åã¹ãããã§
isnan()
ã«ãããã§ãã¯ãå ¥ãã - ãã¹ãæã«ã¯æå³çã«NaNãå«ãããŒã¿ãäžããŠæå確èªãè¡ã
ãšãã£ã察å¿ã广çã§ãã
ãã©ãããã©ãŒã ãã³ã³ãã€ã©äŸåã®æå
NaNã®å éšããã衚çŸã¯IEEE 754ã«æºæ ããŠããŸãããåãã©ãããã©ãŒã ãã³ã³ãã€ã©ã«ãã£ãŠåŸ®åŠãªæåã®éããçããããšããããŸããç¹ã«ã次ã®ç¹ã«ã¯æ³šæãå¿ èŠã§ãïŒ
nan("")
ã®æåååŒæ°ãè§£æããããã©ããïŒç¡èŠãããå ŽåãããïŒ- printf ã§ã®åºåãã©ãŒãããïŒ
nan
ãNaN
ã-nan
ãªã©ïŒ - sNaN ã䜿çšã§ãããã©ããïŒå€ãã®ç°å¢ã§ã¯ãµããŒããããŠããªãïŒ
ãããã£ãŠãç§»æ€æ§ãéèŠããã³ãŒãã§ã¯NaNã®åãæ±ãã«æ³šæãæããç°ãªãç°å¢ã§ã®æ€èšŒãæ¬ ãããªãããã«ããŸãããã
8. ãŸãšã
NaNãæ£ããçè§£ããããšã®éèŠæ§
NaNïŒNot a NumberïŒã¯ãCèšèªã«ãããæµ®åå°æ°ç¹æŒç®ã«ãããŠãæ°å€ãšããŠæå³ãæããªãçµæã瀺ãç¹å¥ãªå€ã§ãããŒãé€ç®ãç¡å¹ãªæŒç®ã®çµæãšããŠç»å ŽããNaNã¯ããšã©ãŒãšããŠåŠçãæ¢ããã®ã§ã¯ãªãããç¡å¹ãªç¶æ ãçºçããããšããæ å ±ãæ°å€ã§è¡šçŸããããã®ä»çµã¿ã§ãã
ãã®ãããªç¹æ§ãæã€NaNã¯ãäžèŠæ±ãã«ããæãããããããŸããããæ£ããçè§£ãæŽ»çšããããšã§ãããã°ã©ã ã®å ç¢æ§ãæè»æ§ã倧ããåäžãããããšãå¯èœã§ãã
æ¬èšäºã§åŠãã ãã€ã³ã
- NaNãšã¯äœãïŒ æ°å€ãšããŠæ±ããªãç¹æ®ãªå€ã§ãã
- çææ¹æ³ïŒ
nan("")
颿°ãªã©ãçšããŠæç€ºçã«çæã§ãã - çš®é¡ïŒquiet NaNãšsignaling NaNãããïŒå®è£ äŸåïŒ
- å€å®æ¹æ³ïŒ
isnan()
颿°ã«ãã£ãŠå®å šã«ãã§ãã¯ã§ãã - 掻çšäŸïŒæ¬ æå€ããšã©ãŒæ€åºããããã°çšããŒã«ãŒãªã©å€å²ã«ããã
- 泚æç¹ïŒæ¯èŒæŒç®ãåžžã«falseã«ãªãç¹ããäŒææ§ãã¯ã©ãã·ã¥ããªãæ§è³ª
NaNãšã®ä»ãåãæ¹ïŒçŸå Žã§ã®å®è·µã«åããŠ
NaNã¯ãããã°ã©ã ãéãã«ééã£ãç¶æ ãžé²è¡ããå¯èœæ§ãå«ãã§ããŸãããã®ããããèŠã€ãããæ¢ãããã§ã¯ãªãããèµ·ããåæã§èšèšãããããšãéèŠã§ãã
ç¹ã«æ°å€åŠçãä¿¡é Œæ§ãæ±ããããã·ã¹ãã ã§ã¯ãNaNã®å€å®ãé€å»åŠçãåææ®µéã§ãã£ããèšèšããŠããããšã§ãåŸã®ãã°ãé害ãå€§å¹ ã«æžããããšãã§ããŸãã