mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 143 1...136137138139140141142143144145146147148149150...247 새 코멘트 Artyom Trishkin 2019.10.28 09:41 #1421 Alexey Viktorov : 값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다. 이것은 오류 없이 작동합니다. 솔직히 말해서, 나는 0이 어디에서 오는지 이해하지 못했습니다. const double Points = TickValue[ 0 ] ? Profit / (Lots * TickValue[ 0 ] * _Point ) : 0 ; // zero divide TickValue[0]에 쓰레기가 있습니다. 0일 수도 있고 아닐 수도 있습니다. TickValue[0]의 가비지가 0이 아니면 Points = Profit / Lot * 0이 아닌 쓰레기 * _Point를 계산하고, 그렇지 않고 TickValue[0]의 쓰레기가 0이면 Points를 0으로 설정합니다. 그리고 Lot가 선언될 때 Lot가 1로 초기화된 경우 표현식 Lot * 0이 아닌 쓰레기 * _Point 에서 0은 어디에서 왔습니까? _Point에 0이 있습니까 ? TheXpert 2019.10.28 09:43 #1422 fxsaber : 오류는 분명합니다. 알겠습니다. 오류가 명확하지 않습니다. 그리고 나는 번식할 수 없다. fxsaber 2019.10.28 09:52 #1423 TheXpert : 알겠습니다. 오류가 명확하지 않습니다. 그리고 나는 번식할 수 없다. 대략적으로 말하면 이 함수를 호출하면 0으로 나눌 수 있습니다. // Неправильно написанная функция. double WrongFunc( const double Num ) { return (Num ? 1 / ( 0.1 * Num) : 0 ); } 보고서 라이브러리에서 실제로 문제에 직면했습니다. 그때 나는 그것이 의미가 있다는 것을 깨달았습니다. TheXpert 2019.10.28 10:00 #1424 fxsaber : 대략적으로 말하면 이 함수를 호출하면 0으로 나눌 수 있습니다. 테두리에 그런 코드가 있는데 inf를 제공하지만 충돌하지 않습니다. double f( const double Num ) { return (Num ? 1 / ( 0.1 * Num) : 0 ); } void OnStart () { Print (f( 1 e- 308 )); // 2019.10.28 13:02:19.457 test (USDJPY,H1) inf } fxsaber 2019.10.28 10:04 #1425 TheXpert : 테두리에 그런 코드가 있는데 inf를 제공하지만 충돌하지 않습니다. #include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280 void OnStart () { double Num = 0 ; _W(Num) = ( uchar ) 2 ; Print (WrongFunc(Num)); } TheXpert 2019.10.28 10:09 #1426 fxsaber : 그런 충돌. fxsaber 2019.10.28 10:27 #1427 TheXpert : 그런 충돌. 요약하자면, 0이 아닌 두 배를 곱하면 0이 될 수 있습니다. 그리고 이것은 퇴화한 사례가 아니라 실제로 실제 사례입니다. 대략적으로 말하자면, 전투 고문은 이 때문에 0이 아닌 확률로 부서질 수 있습니다. TheXpert 2019.10.28 10:32 #1428 또한 0을 확인하면 명시적이든 암시적이든(bool로 캐스팅) 저장되지 않습니다. fxsaber 2019.10.28 10:42 #1429 TheXpert : 또한 0을 확인하면 명시적이든 암시적이든(bool로 캐스팅) 저장되지 않습니다. return ( 0.1 * Num ? 1 / ( 0.1 * Num) : 0 ); Igor Makanu 2019.10.28 10:56 #1430 fxsaber : 요약하자면, 0이 아닌 두 배를 곱하면 0이 될 수 있습니다. 그리고 이것은 퇴화한 사례가 아니라 실제로 실제 사례입니다. 대략적으로 말하자면, 전투 고문은 이 때문에 0이 아닌 확률로 부서질 수 있습니다. NaN의 경우 추가로 확인해야 합니다. 이 코드가 작동 할 가능성이 큽니다. f != f 또는 CompareDoubles() 예제에서와 같이 정밀도를 제한합니다. SB https://www.mql5.com/en/docs/basis/types/double 에 있는 것 같습니다. 1...136137138139140141142143144145146147148149150...247 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
값이 없으면 반드시 0이고, 따라서 이것이 bool 유형 이 아닌 변수인 경우 false가 되기를 바랄 필요는 없습니다. bool에 대한 명시적 캐스트조차도 도움이되지 않습니다.
이것은 오류 없이 작동합니다.
솔직히 말해서, 나는 0이 어디에서 오는지 이해하지 못했습니다.
TickValue[0]에 쓰레기가 있습니다. 0일 수도 있고 아닐 수도 있습니다.
TickValue[0]의 가비지가 0이 아니면 Points = Profit / Lot * 0이 아닌 쓰레기 * _Point를 계산하고, 그렇지 않고 TickValue[0]의 쓰레기가 0이면 Points를 0으로 설정합니다.
그리고 Lot가 선언될 때 Lot가 1로 초기화된 경우 표현식 Lot * 0이 아닌 쓰레기 * _Point 에서 0은 어디에서 왔습니까? _Point에 0이 있습니까 ?
오류는 분명합니다.
알겠습니다. 오류가 명확하지 않습니다. 그리고 나는 번식할 수 없다.
알겠습니다. 오류가 명확하지 않습니다. 그리고 나는 번식할 수 없다.
대략적으로 말하면 이 함수를 호출하면 0으로 나눌 수 있습니다.
보고서 라이브러리에서 실제로 문제에 직면했습니다. 그때 나는 그것이 의미가 있다는 것을 깨달았습니다.
대략적으로 말하면 이 함수를 호출하면 0으로 나눌 수 있습니다.
테두리에 그런 코드가 있는데 inf를 제공하지만 충돌하지 않습니다.
테두리에 그런 코드가 있는데 inf를 제공하지만 충돌하지 않습니다.
그런 충돌.
요약하자면, 0이 아닌 두 배를 곱하면 0이 될 수 있습니다. 그리고 이것은 퇴화한 사례가 아니라 실제로 실제 사례입니다.
대략적으로 말하자면, 전투 고문은 이 때문에 0이 아닌 확률로 부서질 수 있습니다.
또한 0을 확인하면 명시적이든 암시적이든(bool로 캐스팅) 저장되지 않습니다.
요약하자면, 0이 아닌 두 배를 곱하면 0이 될 수 있습니다. 그리고 이것은 퇴화한 사례가 아니라 실제로 실제 사례입니다.
대략적으로 말하자면, 전투 고문은 이 때문에 0이 아닌 확률로 부서질 수 있습니다.
NaN의 경우 추가로 확인해야 합니다. 이 코드가 작동 할 가능성이 큽니다.
또는 CompareDoubles() 예제에서와 같이 정밀도를 제한합니다. SB https://www.mql5.com/en/docs/basis/types/double 에 있는 것 같습니다.