void OnStart()
{
//--- Print()를 사용하여 DBL_MAX를 출력하며, 이는 PrintFormat(%%.16G,DBL_MAX)와 동일합니다
Print("---- DBL_MAX의 모습 -----");
Print("Print(DBL_MAX)=",DBL_MAX);
//--- PrintFormat()을 사용하여 DBL_MAX 번호를 출력
PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- 엑스퍼트 저널로 출력
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
//--- float 출력 방법 보기
float c=(float)M_PI; // 목표 유형에 명시적으로 캐스팅해야 합니다
Print("c=",c, " Pi=",M_PI, " (float)M_PI=",(float)M_PI);
// c=3.14159 Pi=3.141592653589793 (float)M_PI=3.14159
//--- 실제 유형을 사용하여 산술 연산을 수행할 수 있는 작업 표시
double a=7,b=200;
Print("---- 산술 연산 전");
Print("a=",a," b=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- a를 b로 나눔 (7/200)
a=a/b;
//--- 이제 변수 b의 값 복원을 에뮬레이트 함
b=7.0/a; // Ib=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 로 예상되지만 다름
//--- 새로 계산된 b 값을 출력
Print("----- 산술 연산 후");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- 엑스퍼트 저널로 출력
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (see that b is no more equal to 200.0)
//--- 아주 작은 값 epsilon=1E-013 생성
double epsilon=1e-13;
Print("---- 아주 작은 값 생성");
Print("epsilon=",epsilon); // epsilon=1E-013 가져오기
//--- 이제 b에서 epsilon을 뺀 후 다시 엑스퍼트 저널에 값을 출력
b=b-epsilon;
//--- 두 가지 방법 사용
Print("---- b 변수에서 epsilon을 뺀 후");
Print("Print(b)=",b);
Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- 엑스퍼트 저널로 출력
// Print(b)=199.9999999999999 (이제 epsilon을 뺀 b의 값은 200으로 반올림할 수 없음)
// Print(DoubleToString(b,16))=199.9999999999998578
// (이제 epsilon을 뺀 b 값은 200으로 반올림할 수 없음)
}
|