MathClassify

실수의 유형을 결정하고 ENUM_FP_CLASS 열거값으로 결과를 반환하십시오

ENUM_FP_CLASS  MathClassify(
   double  value      // 실수
   );

Parameter

value

[in]  확인할 실수

반환값

ENUM_FP_CLASS 열거값

ENUM_FP_CLASS

ID

설명

FP_SUBNORMAL

0에 가까우며 정상수로 표현이 가능한 가장 작은 준정규값 DBL_MIN (2.2250738585072014e-308)

FP_NORMAL

2.2250738585072014e-308 and 1.7976931348623158e+308 범위의 정규값

FP_ZERO

양 또는 음의 0

FP_INFINITE

적절한 유형(양수 또는 음수 무한대)으로 나타낼 수 없는 숫자

FP_NAN

숫자가 아닙니다.

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                         |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- NaN 테스트
  double nan=double("nan");
  PrintFormat("Test NaN: %G is %s, MathIsValidNumber(NaN)=%s",
              nan,
              EnumToString(MathClassify(nan)),
              (string)MathIsValidNumber(nan));
//--- 무한대 테스트
  double inf=double("inf");
  PrintFormat("Test Inf: %G is %s, MathIsValidNumber(inf)=%s",
              inf,
              EnumToString(MathClassify(inf)),
              (string)MathIsValidNumber(inf));
//--- 정규값 테스트
  double normal=1.2345e6;
  PrintFormat("Test Normal: %G is %s, MathIsValidNumber(normal)=%s",
              normal,
              EnumToString(MathClassify(normal)),
              (string)MathIsValidNumber(normal));
//--- 비정규값 테스트
  double sub_normal=DBL_MIN/2.0;
  PrintFormat("Test Subnormal: %G is %s, MathIsValidNumber(sub_normal)=%s",
              sub_normal,
              EnumToString(MathClassify(sub_normal)),
              (string)MathIsValidNumber(sub_normal));
//--- 0 값 테스트
  double zero=0.0/(-1);
  PrintFormat("Test Zero: %G is %s, MathIsValidNumber(zero)=%s",
              zero,
              EnumToString(MathClassify(zero)),
              (string)MathIsValidNumber(zero));
 } 
 /*
결과:
   Test NaNNAN is FP_NANMathIsValidNumber(NaN)=false
   Test InfINF is FP_INFINITEMathIsValidNumber(inf)=false
   Test Normal1.2345E+06 is FP_NORMALMathIsValidNumber(normal)=true
   Test Subnormal1.11254E-308 is FP_SUBNORMALMathIsValidNumber(sub_normal)=true
   Test Zero: -0 is FP_ZEROMathIsValidNumber(zero)=true
*/ 
//+------------------------------------------------------------------+

참고 항목

Real types (double, float), MathIsValidNumber