커뮤니티
mod질문
2014-08-20 17:41:37
144
글번호 77851
선물 10분봉에 아래의 지표를 적용하면
var1= mod(dayopen()*100,1);
plot1(var1);
값이 1인 경우가 발생하는데, 자연수를 1로나눈 나머지가 1이 될수 없는데
왜 이런가요?
var1= mod(dayopen()*100,2);
plot1(var1);
이런경우에도 0,1만 나와야 하는데, 2가 간혹 나오네요.
(옵션종목에서도 마찬가지 현상임.)
답변 1
예스스탁 예스스탁 답변
2014-08-21 15:31:01
안녕하세요
예스스탁입니다.
컴퓨터에서 연산을 할때 발생하는 부동소숫점오류 때문입니다.
CPU가 연산시 2진법으로 계산해서 다시 10진법로 돌려주는데
이때 값처리의 문제가 발생합니다.
MessageLog("%.20f",dayopen*100);
차트에 위 식 적용해 보시면
25935가 25935.00000000000400000000
와 같이 낮은 소숫점 자리에 위와 같은 숫자값이 나오게 됩니다.
var1= mod(round(dayopen()*100,0),1);
plot1(var1);
위와 같이 계산값을 반올림해서 처리하시면 됩니다.
즐거운 하루되세요
> ujm 님이 쓴 글입니다.
> 제목 : mod질문
> 선물 10분봉에 아래의 지표를 적용하면
var1= mod(dayopen()*100,1);
plot1(var1);
값이 1인 경우가 발생하는데, 자연수를 1로나눈 나머지가 1이 될수 없는데
왜 이런가요?
var1= mod(dayopen()*100,2);
plot1(var1);
이런경우에도 0,1만 나와야 하는데, 2가 간혹 나오네요.
(옵션종목에서도 마찬가지 현상임.)