학위와 관련된 트릭이 있는 이유는 무엇입니까? - 페이지 2

 
Roman :

-0.2는 0으로 나누기 오류를 반환하는 0이 아닙니다.

이 함수는 -nan을 반환합니다. 숫자가 아닙니다. -nan으로 나누려고 하면 오류가 발생합니다. 그런 점에서 오류 텍스트는 단순히 부적절합니다.

 

올바른 솔루션: 솔루션은 복잡한 영역에 있습니다.


그러나 양수 및 음수 입력 매개변수에 대해 다른 결정 분기를 갖는 것에 대해 이야기하는 경우 먼저 다음 분기를 정의하면 됩니다.

.

이렇게 하면 괜찮을 것입니다. ;)
 
Andrey Azatskiy :

이 함수는 -nan을 반환합니다. 숫자가 아닙니다. -nan으로 나누려고 하면 오류가 발생합니다. 그런 점에서 오류 텍스트는 단순히 부적절합니다.

그렇다면 왜 -0.2 -nan입니까? :))

또 다른 기능 테스트

계산기에서

 1 /(- 3 ^ 3 )

- 27

mql 함수에서

 double n = 1.0 / MathPow (- 3.0 , 3.0 );
Print (n);

- 0.03703703703703703
 
Roman :

그렇다면 왜 -0.2 nan입니까? :))

또 다른 기능 테스트

계산기에서

mql 함수에서

-0.2 - nan이 아니라 지수의 결과입니다.
숫자의 분수 거듭제곱(a^m/n)은 a^m의 n번째 근입니다.
급진적 인 값이 음수이고 m 정도와 숫자 a 자체에 따라 음수와 양수 모두가 될 수 있습니다 (내 문제에서는 항상 음수이므로 양수 m이면 양수이고 부정적인 것 - 부정적인 것). 따라서 루트 값이 음수이면 숫자도 음수입니다. 음수의 근은 복소수 영역에 있으므로 일반적인 이중 유형 을 통해 복소수 영역의 값에 대해 연산할 수 없으며 이 때문에 정도의 표준 구현은 -nan을 생성합니다.

Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float)
  • www.mql5.com
Вещественные типы (или типы с плавающей точкой) представляют значения, имеющие дробную часть. В языке MQL5 есть два типа для чисел с плавающей точкой. Способ представления вещественных чисел в машинной памяти определен стандартом IEEE 754 и не зависит от платформ, операционных систем и языков программирования. Константы с плавающей точкой...
 
Олег avtomat :

올바른 솔루션: 솔루션은 복잡한 영역에 있습니다.


그러나 양수 및 음수 입력 매개변수에 대해 다른 결정 분기를 갖는 것에 대해 이야기하는 경우 먼저 다음 분기를 정의하면 됩니다.

.

이렇게 하면 괜찮을 것입니다. ;)

자세한 답변 감사합니다. 그러나 복잡한 미적분학은 내 작업에 적합하지 않으므로 자연수로 제한하고 결과적으로 복잡한 영역에 빠지지 않을 것입니다.

 
Andrey Azatskiy :

자세한 답변 감사합니다. 그러나 복잡한 미적분학은 내 작업에 적합하지 않으므로 자연수로 제한하고 결과적으로 복잡한 영역에 빠지지 않을 것입니다.

그래서 나는 이것에 대해 이야기하고 있으며 구체적으로 예를 보여주었습니다. 주의 깊게 봐. 이 예는 당신에게 딱 맞습니다.

추신

µl로 변환하는 것은 매우 쉽습니다

 
Andrey Azatskiy :

-0.2 - nan이 아니라 지수의 결과입니다.
분수의 거듭제곱(a^m/n)은 a^m의 n번째 근입니다.
급진적 인 값이 음수이고 m 정도와 숫자 a 자체에 따라 음수와 양수 모두가 될 수 있습니다 (내 문제에서는 항상 음수이므로 양수 m이면 양수이고 부정적인 것 - 부정적인 것). 따라서 루트 값이 음수이면 숫자도 음수입니다. 음수의 근은 복소수 영역에 있으므로 일반적인 이중 유형 을 통해 복소수 영역의 값에 대해 연산할 수 없으며 이 때문에 정도의 표준 구현은 -nan을 생성합니다.

Andrey, 예, 그는 그렇게하지 않았습니다. 권력을 올린 결과가 -nan으로 돌아 오는 것이 분명합니다.
그러나 정수가 0 -0.2인 분수 거듭제곱은 이 결과를 생성합니다.
계산기가 맞습니다.

그리고 이전 테스트도 계산기처럼 계산되지 않습니다.

 
Олег avtomat :

그래서 나는 이것에 대해 이야기하고 있으며 구체적으로 예를 보여주었습니다. 주의 깊게 봐.

네, 다 이해했습니다. 감사합니다. (심지어 공식도 작성되었습니다)

 
Andrey Azatskiy :

아마도 음수에서 짝수 뿌리를 뽑는 것이 불가능하다는 사실에서 다리가 자랄 것입니까? 나는 이미 다소 혼란 스럽습니다 ... 그리고 가장 중요한 것은이 문제를 해결하는 방법은 무엇입니까?

정수 거듭제곱은 단순히 곱셈(음수 지수의 경우 역수)으로 정의되므로 음수 밑수로 쉽게 전환됩니다. 분수 거듭제곱은 로그와 지수로 정의됩니다. y^x=exp(x*ln(y)) 음수를 사용하면 복소 평면에 들어갑니다. logarithm은 가지가 무한히 많으며 적당한 가지를 찾는 번거로움을 피하기 위해 NAN을 반환한다.

 
Andrey Azatskiy :

답변 감사합니다만, 일반적으로 산술적으로 정확한 해를 구하면 복소수만으로도 비슷한 것을 구현할 수 있을 것 같습니다... 제안하신 방법에서 차수를 나누어서 루트 값은 항상 양수이고 답은 항상 양수입니다. 그러나 이 피팅 없이 취하면 일반적으로 받아 들여지는 대수 모델에 따르면 내가 아는 한 (나는 교육을 받은 수학자가 아닙니다) - 음수의 근은 다음과 같을 것입니다. 복소수.

위에서 제안한 공식을 사용하십시오

다음은 공식에 따라 하나씩입니다.

 void OnStart ()
  {
   int m = 2 ;
   int n = 10 ;
   
   double result = 1.0 / pow ( pow (- 5.5 ,m), 1.0 /n); 		// result = 0.7110947333604484
   Print ( "result = " ,result);
  }

다음은 double을 분수로 변환하는 방법의 예입니다.

https://www.mql5.com/ru/forum/290279#comment_9396706

Число в дробь (convert double to fraction)
Число в дробь (convert double to fraction)
  • 2018.11.16
  • www.mql5.com
Ищу способ преобразовать вещественное число в дробь, нагуглил исходник https://stackoverflow...