"정확한"값을 얻을 수 있습니까?

 

인사말. 작업에 도움이 필요합니다.

// 0.02 * 4.9 = 0.098
DoubleToStr ( 0.02 * 4.9 , 2 ); // = 0.1
DoubleToString ( 0.02 * 4.9 , 2 ); // = 0.1
NormalizeDouble ( 0.02 * 4.9 , 2 ); // = 0.1

모든 함수는 0.1을 반환합니다. (0.02*4.9) = 0.098이지만 0.09를 반환해야 합니다.

내 계산기가 반환하는 정확한 값을 얻는 방법을 알려주시겠습니까? :)

 

0.02*4.9=0.098 -- 0.98이 아님

소수점 이하 2자리 형식으로 출력 시 -- 0.098은 반올림 규칙에 따라 0.10으로 반올림하여 출력

3자 형식으로 출력하면 전체 숫자가 표시됩니다.

 
abolk :

0.02*4.9=0.098 -- 0.98이 아님

소수점 이하 2자리 형식으로 출력 시 -- 0.098은 반올림 규칙에 따라 0.10으로 반올림하여 출력

3자 형식으로 출력하면 전체 숫자가 표시됩니다.

덕분에 숫자 수정했습니다.

문제는 소수점 뒤 2자리를 취해야 한다는 것입니다. :) 반올림된 이유는 무엇입니까? 반올림하지 않고 소수점 이하 두 자리(0.09)만 있는 소수를 어떻게 취할 수 있습니까?

 
WePlexus :

덕분에 숫자 수정했습니다.

문제는 소수점 뒤 2자리를 취해야 한다는 것입니다. :) 반올림된 이유는 무엇입니까? 반올림하지 않고 소수점 이하 두 자리(0.09)만 있는 소수를 어떻게 취할 수 있습니까?

문자열로 변환하고 필요한 수의 문자를 가져옵니다.
 
WePlexus :

덕분에 숫자 수정했습니다.

문제는 소수점 뒤 2자리를 취해야 한다는 것입니다. :) 반올림된 이유는 무엇입니까? 반올림하지 않고 소수점 이하 두 자리(0.09)만 있는 소수를 어떻게 취할 수 있습니까?

 int a= int ( 0.098 / 0.01 );
   double b=a* 0.01 ;
   Comment ( DoubleToString (b, 2 ));
 
sanyooooook :
문자열로 변환하고 필요한 수의 문자를 가져옵니다.
그리고 당신은 더 나은 방법을 모릅니다
 
Vinin :
그리고 당신은 더 나은 방법을 모릅니다
그리고 말해주세요. :)
 
valeryk :

그렇다면:

 int a= int (( 0.09 * 5 )/ 0.01 );
double b=a* 0.01 ;
Comment ( DoubleToString (b, 2 ));

그런 다음 필요한 0.45 대신 출력에서 0.44를 얻습니다.

 
WePlexus :

그렇다면:

그런 다음 필요한 0.45 대신 출력에서 0.44를 얻습니다.

 int a= int ( MathFloor (( 0.98 )/ 0.001 ));
   double b=a* 0.001 ;
   Comment ( DoubleToString (b, 2 ));
 
valeryk :

0.98이 아니라 0.098입니다. :)

 int a = int ( MathFloor (( 0.098 ) / 0.001 ));
double b = a * 0.001 ;
Comment ( DoubleToString (b, 2 ));

1을 반환하지만 정확한 값 = 0.09를 원했습니다.

 
Vinin :
그리고 당신은 더 나은 방법을 모릅니다

이것이 가장 먼저 떠오른 것입니다. 물론 더 쉬운 것도 있습니다.

그건 그렇고, 이것은 또한 어렵지 않습니다. 아마도 더 느리게 작동합니다.

   int DIGITS= 2 ;
   string stroka= DoubleToString ( 0.09845 , 8 );
   int P= StringFind (stroka, "." );
   Print (stroka);
   stroka= StringSubstr (stroka, 0 ,P+DIGITS+ 1 );
   Print ( StringToDouble (stroka));

возвращает:

2014.10.04 11:32:53.731	normalize EURUSD,H4: 0.09
2014.10.04 11:32:53.731	normalize EURUSD,H4: 0.09845000

사유: