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

 
fxsaber :

예, 여덟.

그땐 왜

 void OnStart ()
{
         double price = 500000000.0001 ;
         Print ( price, ":" , Digits_values( price ));
}

Digits_values 는 4를 반환합니까?

결과: 500000000.0001:4

 

그리고 소수점 이하 자릿수는 몇 개입니까?

 void OnStart ()
{
         double price = 5000000000.0001 ;
         Print ( price, ":" , GetDigits( price ));
}

컴퓨터가 셀 수 없을 정도로 많습니다.

결과: ???

 
A100 :

그땐 왜

Digits_values는 4를 반환합니까?

결과: 500000000.0001:4

문자열로 캐스팅하는 방법을 배웁니다.

 
A100 :

그리고 소수점 이하 자릿수는 몇 개입니까?

컴퓨터가 셀 수 없을 정도로 많습니다.

결과: ???

예, 1/3처럼.

 
A100 :

좋은 솔루션은 일반적으로 올바르게 작동합니다.

다 확인은 못했는데 MQL4에서 2번 테스트 해보니 출력값이 맞았다

 
fxsaber :

문자열로 캐스팅하는 방법을 배웁니다.

그리고 유령은 어떻습니까? 원래 번호 500000000.0001 이 있습니다

문제는 소수점 이하 자릿수가 몇 개입니까? 답은 4이고 당신은 8이 있습니다.

 
A100 :

원래 번호 500000000.0001 이 있습니다

이중에는 그런 수가 없습니다. 500000000.000100016593933105와 거의 같습니다. 할당됩니다.

 
A100 :

그리고 유령은 어떻습니까? 원래 번호 500000000.0001 이 있습니다

문제는 소수점 이하 자릿수가 몇 개입니까? 답은 4이고 당신은 8이 있습니다.

"you have 8"이 아니라 mql에서 기본값은 8입니다. 문서를 읽는 방법을 모르십니까?

 
Alexandr Sokolov :

소수점 이하 자릿수를 구해야 하는 경우가 드물고 Digits() 함수는 따옴표로만 작동하며 이에 대한 정보가 없는 경우가 저뿐만이 아닌 것 같습니다. 아무데나 (적어도 이전에 이 게시물을 작성할 당시에는 찾지 못했기 때문에 내가 찾은 솔루션을 보여주고 싶습니다)?


결과적으로 본질은 매우 간단하지만 여전히 한 가지 단점이 있습니다. 이 기능은 그 뒤에 다른 숫자가 없으면 0을 인식하지 못합니다. 예를 들어, 함수에 숫자 0.01이 주어지면 2를 반환하고 0.0000이면 0을 반환합니다(즉, 4개의 0이 표시되지 않음). 따라서 개발에서 이러한 단점을 고려하십시오.


MQL4의 코드



Value 매개변수가 파란색으로 그려져 있다는 사실이 조금 걱정되지 않으세요?

 
Алексей Тарабанов :

Value 매개변수가 파란색으로 그려져 있다는 사실이 조금 걱정되지 않으세요?

어떤 이유로 포럼에 있지만 편집기에서는 모든 것이 평소와 같습니다.