Возможно ли получить "точное" значение? - страница 4

 
sanyooooook:

какая функция имеется ввиду?

первая через строку или NL?

Функция NL.

Если так:

NL (2, 0.09 * 5); // 0.44

То выдает 0.44, вместо 0.45. 

 
WePlexus:

Функция NL.

Если так:

То выдает 0.44, вместо 0.45. 


   Print(NL(DIGITS,0.45));
2014.10.04 13:13:03.089 normalize EURUSD,H4: 0.45
 
WePlexus:

Функция NL.

Если так:

То выдает 0.44, вместо 0.45. 

это от того что: MathFloor(value/step)=44

на вход идёт 44.99999999999999, а эта функия возвращает ближайшее целое число снизу.

почему: value/step(0.45/0.01)=44.99999999999999 это не ко мне вопрос )

 
sanyooooook:

это от того что: MathFloor(value/step)=44

на вход идёт 44.99999999999999, а эта функия возвращает ближайшее целое число снизу.

почему: value/step(0.45*100)=44.99999999999999 это не ко мне вопрос )

Спасибо. :)
 
WePlexus:
Спасибо. :)
поправил ошибку в посте
 
WePlexus:
Спасибо. :)

значит твоя функция правильнее )

кстати в этом случае все функции кроме моей дают 0.45 ))

 
значит нужно перед использование функции делать проверку входных дынных и в зависимости от того какое число выбирать ту или иную функцию )
 
sanyooooook:

значит твоя функция правильнее )

кстати в этом случае все функции кроме моей дают 0.45 ))

ну, санёк, ты и обманщик.

моя функция:

//double d=0.019999999999999999;
double d=0.09*5;
double e=(int)(d*100)/100.0;
Print("e=",e);
выдаёт =0.44
 
abolk:

моя функция

выдаёт =0.44
Да, а в калькуляторе пишет 0.09*5=0.45. :)
 
WePlexus:
Правильно, а результат в калькулятор 0.45. :)

точно, не обратил внимание изначально 

Причина обращения: