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

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

결과: 500000000.0001: 4

4가 아니라 8

 
글쎄요, 좋아요 ... 원한다면 이 기쁨을 만끽하세요.
 
A100 :

추측 . 그리고 소수점 이하 자릿수는 몇 개입니까? 여덟?

나는 테스트를 받을 필요가 없습니다.

   Print ( NormalizeDouble ( 1234567890 + 1 e- 7 , 8 ) == 1234567890 ); // true
   Print ( 1234567890 + 1 e- 7 == 1234567890 ); // true
 
fxsaber :

나는 테스트를 받을 필요가 없습니다.

그럼에도 불구하고 코드 를 수정했습니다. 이는 검사가 유익했다는 의미입니다.

 
인쇄 ( 12345+1e-7)
 

코드를 가져온 위치를 확인하십시오. 그리고 그것은 어떤 실질적인 목적을 위해 의도된 것입니다. 명확하지 않은 경우 - 가격.

코드에 오류가 없었습니다. 그러한 사용자가 사용하도록 의도된 것이 아닙니다.

토론 과정에서 공개적으로 게시할 경우 완전 방지를 설정해야 한다는 것이 밝혀졌습니다. 그렇지 않으면 sracha 5 페이지.

그래서 실제로 수정했습니다. 다시 한 번, 무한 자릿수를 가진 숫자가 표준입니다.

 
Dmitry Fedoseev :

나는 NormalizeDouble 이 어떻게 작동하는지 알고 있습니다. 왜냐하면 전체 아날로그를 재현했습니다.

그것은 모두 당신이 얻는 데 필요한 숫자에 달려 있습니다. 표현이 double이면 코드에서 다른 값을 생성합니다. 숫자가 숫자 상수이면 정확합니다(항상 그런 것은 아님).

 
글쎄, 여기서 그들은 다시 피펫으로 측정됩니다 ...
 
fxsaber :

그것은 모두 당신이 얻어야 할 숫자에 달려 있습니다.

그런 필요

 int f( double );

(특히)에게

 void OnStart ()
{
         Print ( f( NormalizeDouble ( 500000000.0001 , 4 )));
}

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

 
A100 :

그런 필요

에게

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

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