Константа не должна быть с мусором.
Так зачем тогда нормализация? - для простого округления чисел?
Если дальше есть мусор то она должна округлить так 1.05488636346779 -
1.0549.
Или нормализация нужна для тех процессов которые происходят при вычислениях над действительными числами?
Нормализация нужна для округления до Digits при торговле, а в этих случаях как?
Так зачем тогда нормализация? - для простого округления чисел?
Если дальше есть мусор то она должна округлить так 1.05488636346779 -
1.0549.
Или нормализация нужна для тех процессов которые происходять при вычислениях над действительными числами?
А если не 1.05488636346779 а вовсе даже 1.05480636346779?
А так всё просто, если дельта типа интежер и значение чисто случайно было 1.05480-1.05411, то естественно было получить 10548.0-10541.1=6,9 (а так как дельта интежер то дельта = 6).
А если не 1.05488636346779 а вовсе даже 1.05480636346779?
А так всё просто, если дельта типа интежер и значение чисто случайно было 1.05480-1.05411, то естественно было получить 10548.0-10541.1=6,9 (а так как дельта интежер то дельта = 6).
Если такой случай то да и нормализация всё делает верно - округляет с 0,00069 до 0,0007, но если 1.05488-1.05411 то .....
А если не 1.05488636346779 а вовсе даже 1.05480636346779?
А так всё просто, если дельта типа интежер и значение чисто случайно было 1.05480-1.05411, то естественно было получить 10548.0-10541.1=6,9 (а так как дельта интежер то дельта = 6).
Получается так всегда.
Если такой случай то да и нормализация всё делает верно - округляет с 0,00069 до 0,0007, но если 1.05488-1.05411 то .....
Не, если так, то целочисленное дельта должно было быть 7. Но так как в коде были заданы значения с точностью до 4 знака, то о 5 знаке можно спорить до хрипоты, а всё равно задавать дельту лучше дабл и нормализовать её надо обязательно )))
Не, если так, то целочисленное дельта должно было быть 7. Но так как в коде были заданы значения с точностью до 4 знака, то о 5 знаке можно спорить до хрипоты, а всё равно задавать дельту лучше дабл и нормализовать её надо обязательно )))
А я и не спорю, просто я такой человек - запоминаю только то что понимаю. Это не понятно.
Добится верного результата одно, а понять - другое.
Добится верного результата одно, а понять - другое.
При любых вычислениях их результат может отличаться от истинного значения, поэтому для сравнения следует либо нормализовывать вычисляемые значения, либо учитывать размер возможной ошибки вычислений.
о_О.... либо вообще бросить эти бесполезные попытки... :-)))
нормализовать то, что вроде как и так по логике должно нормализоваться само собой... :-)))
А округлять можно как угодно :)
Вроде, говорили, что в пятерке это дело исправлено...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет. есть такой код:
1 вариант.
int start()
{
int delta;
delta=(1.0548-1.0541)/Point;
Comment(delta);
return(0);
}
Результат:delta = 6.
По правилам -
Должно быть delta = 7.
2 вариант.
Если изменить тип delta на double то результат будет верным delta = 7.
3 вариант.
iint start()
{
int delta;
delta=NormalizeDouble((1.0548-1.0541)/Point,Digits);
Comment(delta);
return(0);
}
Результат:delta = 7.
Т.е. мы нормализавали всё выражение.
4 вариант.
Если мы нормализуем не всё выражение а часть delta=NormalizeDouble(1.0548-1.0541,Digits)/Point, то результат тоже верен delta = 7.
Т.е для верного результата необходимо нормализовать только вычитание 1.0548-1.0541. или нужно нормализовывать любые вычисления с действительными числами?
Конец.
Я конечно не программист, но предположу - числа в памяти например 1.0548 хранится не так 1.0548000000000000...., а с каким то
мусором - 1.05480636346779...., может по этому и получается на единицу меньше.