MQL4 및 MQL5에서 Digits()를 무시하고 숫자(따옴표 제외)의 쉼표 뒤 소수 자릿수 가져오기 - 페이지 5

 
A100 :

그런 필요

에게

결과는 다음과 같습니다. 4

정확히 4? 해보자

 
fxsaber :

아마도 이것이 바로 당신에게 필요한 것입니다. TS가 대답했습니다

이것은 정확히 그가 필요로 하는 것입니다. 왜냐하면 (당신이 올바르게 언급했듯이) 모든 숫자가 정확하게 이중으로 표현될 수 있는 것은 아닙니다. 즉, 정확도를 지정하지 않고 문제를 푸는 것은 의미가 없습니다.

 
A100 :

이것은 정확히 그가 필요로 하는 것입니다. 왜냐하면 (당신이 올바르게 언급했듯이) 모든 숫자가 정확하게 이중으로 표현될 수 있는 것은 아닙니다. 즉, 정확도를 지정하지 않고 문제를 푸는 것은 의미가 없습니다.

그리고 소수점 이하 자릿수 를 변경하지 않고 정확도를 지정하거나 내 버전에서 설명한 단점을 제거하는 방법 에는 어떤 옵션이 있습니까? 나 자신을 위해 (문자열) 값 만 찾았습니다.

 
Alexandr Sokolov :

그리고 소수점 이하 자릿수 를 변경하지 않고 정확도를 지정하거나 내 버전에서 설명한 단점을 제거하는 방법 에는 어떤 옵션이 있습니까? 나 자신을 위해 (문자열) 값 만 찾았습니다.

아마도 마지막 0이 아닌 것을 찾는 한계 내에서 의미합니다.

 

나는 MathMod() 를 통해 직렬 제수 0.1 을 사용하여 소수점 이하 자릿수를 계산하려고 시도한 다음 0.01 ...0.000(15 zeros) 1 , 작동하지 않았습니다. 숫자의 정확도는 항상 "부동"입니다. 매번 정규화해야하며 정규화를 사용하면 원하는 숫자를 비교하고 어떤 기호로 정규화하는 것이 더 쉽습니다. 서로 다르면 마지막 기호를 찾은 것입니다.

추신 : 다른 옵션이 있습니다. 확인할 시간이 없었습니다. 정수 부분이없는 실수에 10 ^ 16을 곱하고 모두 long에 저장 한 다음 10으로 나누고 나누기 의 나머지 부분을 확인하십시오. = 0, 다시 나누기

 
Igor Makanu :

추신 : 다른 옵션이 있습니다. 확인할 시간이 없었습니다. 정수 부분이없는 실수에 10 ^ 16을 곱하고 모두 long에 저장 한 다음 10으로 나누고 나누기 의 나머지 부분을 확인하십시오. = 0, 다시 나누기

그것은 가지 않을거야.

 
더블포인트 () 사용
십진 로그 , 부호를 버리십시오 ...
 
Aliaksandr Hryshyn :
더블포인트 () 사용
십진 로그 , 부호를 버리십시오 ...

또한 확인하면 작동하지 않습니다.

이것

 void OnStart ()
{
 double p = 0.07 ;
 Print (p);
} /*******************************************************************/

이 결과를 제공합니다

 2018.11 . 05 10 : 43 : 05.138 ! 00 (GBPJPY,H1) 0.07000000000000001
로그가 무엇인지 세 번 추측하십시오 ...
 
Alexey Viktorov :
또한 확인하면 작동하지 않습니다.
왜요? 그런 다음 정수로 반올림합니다.
 
Point() 함수가 반환하는 내용을 확인하십시오.