커뮤니티
도데체 뭐가 잘못된건지???
2011-07-14 14:54:54
665
글번호 40896
안녕하십니까?
이해가 잘 안가는 현상이 생겨서 문의 드립니다.
너무 간단한 부분이라 본문에 code와 결과를 같이 담습니다. 스크린 캡쳐 화면은 첨부화일로 보냅니다.
if R01<>0 and R02==0 then {
if date==20090115 then
messagelog("RefCount1_1 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
RefCount1=abs(R01-int(R01))*100;
if date==20090115 then
messagelog("RefCount1_2 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
Ref03=R01T[RefCount1];
if date==20090115 then
messagelog("RefCount1_3 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
}
위에서 RefCount1이라는 변수를 Check Point 1,2,3 세군데서 확인하고 이에 따른 array 변수의 값을 봤습니다.
Check Point 1에서는 RefCount1=0, RT01[13]=-1.00의 값을 갖습니다. 그런데 Check Point 2 이하에서는 RefCount1=13 이어도 RT01[RefCount1]=-0.82가 나옵니다. 이 때 RT01[13]의 값은 여전히 -1.00 입니다.
RefCount1 값에 int 함수를 씌워보기도 했지만 마찬가지였고, 또 RefCount1 값이 1에서 12까지는 정상적으로 작동했습니다.
뭐가 문제일 수 있을까요?
다른 부분도 확인해봤는데 같은 증상이 또 있습니다. 결국 문제는
var1=수식에 의한 13 일때
R01T[var1] 과 R01T[13] 이 다른 값을 갖는다는 것입니다.
스샷3,4는 비슷한 증상을 보이는 것입니다. Ref_ANum이라는 변수는 배열값이 variable로 13일때와 상수로 13일때와 다릅니다.
- 1. screen1.jpg (0.05 MB)
- 2. screen2.jpg (0.02 MB)
- 3. screen3.jpg (0.04 MB)
- 4. screen4.jpg (0.01 MB)
답변 1
예스스탁 예스스탁 답변
2011-07-14 15:43:28
안녕하세요
예스스탁입니다.
해당 내용은
RefCount1=abs(R01-int(R01))*100;
계산값을 살펴보셔야 할 것 같습니다.
예스랭귀지는 소숫점이 거의 제한없이 있으므로
굉장히 낮은 수숫자리에 0이 아닌값이 있고
int로 쒸우셔도 이런 내용이 발생할 수 있습니다.
RefCount1= Round(abs(R01-int(R01))*100,0);
과 같이 수숫점 1자리에 반올림하여 정수값으로만 이용하는식으로
변경하셔도 됩니다.
위 내용으로 하셔도 해당 사항이 발생하시면
02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> 트래블점퍼 님이 쓴 글입니다.
> 제목 : 도데체 뭐가 잘못된건지???
> 안녕하십니까?
이해가 잘 안가는 현상이 생겨서 문의 드립니다.
너무 간단한 부분이라 본문에 code와 결과를 같이 담습니다. 스크린 캡쳐 화면은 첨부화일로 보냅니다.
if R01<>0 and R02==0 then {
if date==20090115 then
messagelog("RefCount1_1 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
RefCount1=abs(R01-int(R01))*100;
if date==20090115 then
messagelog("RefCount1_2 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
Ref03=R01T[RefCount1];
if date==20090115 then
messagelog("RefCount1_3 %.2f, R01T[RefCount1] %.2f, R01T[13] %.2f",
RefCount1,R01T[RefCount1],R01T[13]);
}
위에서 RefCount1이라는 변수를 Check Point 1,2,3 세군데서 확인하고 이에 따른 array 변수의 값을 봤습니다.
Check Point 1에서는 RefCount1=0, RT01[13]=-1.00의 값을 갖습니다. 그런데 Check Point 2 이하에서는 RefCount1=13 이어도 RT01[RefCount1]=-0.82가 나옵니다. 이 때 RT01[13]의 값은 여전히 -1.00 입니다.
RefCount1 값에 int 함수를 씌워보기도 했지만 마찬가지였고, 또 RefCount1 값이 1에서 12까지는 정상적으로 작동했습니다.
뭐가 문제일 수 있을까요?
다른 부분도 확인해봤는데 같은 증상이 또 있습니다. 결국 문제는
var1=수식에 의한 13 일때
R01T[var1] 과 R01T[13] 이 다른 값을 갖는다는 것입니다.
스샷3,4는 비슷한 증상을 보이는 것입니다. Ref_ANum이라는 변수는 배열값이 variable로 13일때와 상수로 13일때와 다릅니다.