баг с конвертацией double в int

 

доброго времени суток.

Встретил следующую проблему на MT bld 225, можно ли это как-то победить?

GBPUSD-,M5
Date 2009.11.04
Time 12:00
Open 1.6530
High 1.6531
Low 1.6516
Close 1.6519
Volume 49

double temp= ((High[i] - Open[i])/Point);
int CndltShadow = ((High[i] - Open[i])/Point);
Print(temp);
Print(CndltShadow);

выдаёт: 1 и 0 соответсвенно, как это можно объяснить?
 
Print(DoubleToStr(temp,Digits));
 
kashirinas писал(а) >>

доброго времени суток.

Встретил следующую проблему на MT bld 225, можно ли это как-то победить?

((High[i] - Open[i])/Point) - не нормализовано, остаток отбрасывается, а не округляется.

Так будет правильно -

CndltShadow =MathRound( ((High[i] - Open[i])/Point));
 
Integer >>:

((High[i] - Open[i])/Point) - не нормализовано, остаток отбрасывается, а не округляется.

Так будет правильно -

я так тоже уже пробовал - безрезультатно, посему спрашиваю.

 
kashirinas писал(а) >>

я так тоже уже пробовал - безрезультатно, посему спрашиваю.

Значит как-то не так пробовали.

 
Integer >>:

Значит как-то не так пробовали.

спасибо.


Блин, действительно сейчас округление помогло, но в прошлый раз не прокатывало даже вот лишние скобки от него остались... видимо пересидел за компом(

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