커뮤니티

mod질문

프로필 이미지
ujm
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가 간혹 나오네요. (옵션종목에서도 마찬가지 현상임.)