Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сделал когда-то функции для округления снизу и сверху
Может кому-то поможет
Сделал когда-то функции для округления снизу и сверху
Может кому-то поможет
попробуйте получить результат 0.99999999999999999
X = 0.99999999999999999
10*X = 10*0.99999999999999999
10*X-X = 10*0.99999999999999999-0.99999999999999999
9*X = 9*0.99999999999999999
получим 9*X = 9 или X равен 1 (один)
v1 = (1/3) = 0.33333333 | v2 = 3*(1/3) = 1.00000000
или 0.99999999999999999 = 1.0
v1 (1.00000000) >= 1.0
Всем спасибо за полезную ветку!
Для себя выбрал решение округлять на 1 цифру больше через NormalizeDouble, а потом обрезать последнюю цифру. Пока что это полностью подходит.
И снова про округление......
подскажите пожалуйста по ситуации (только не кидайте помидорами, я гуманитарий),
имеется такая переменная:
double delta=NormalizeDouble(new_lot-sum_lots,Lots_Digits);
if(delta>0) delta-=OrderLots();
if(delta<0) delta+=OrderLots();
по идее delta изначально нормализирована,
OrderLots наверное должен возвращать нормализированные даблы,
но каким-то образом иногда в редких случаях я получаю числа вроде 2.775557561562891e-17
то есть это почти нуль но не нуль.......
первый вопрос - это нормально?
второй вопрос - как я понимаю мне достаточно будет вторую нормализацию чтобы хвостов не появлялось?
третий вопрос (предчувствую что я все равно не пойму, но все таки спрошу):
сложение двух нормализованных чисел может давать ненормализованное?
P.S. прошу прощения что снова это поднимаю, но перечитывать снова всё это просто нет сил
И снова про округление......
подскажите пожалуйста по ситуации (только не кидайте помидорами, я гуманитарий),
имеется такая переменная:
double delta=NormalizeDouble(new_lot-sum_lots,Lots_Digits);
if(delta>0) delta-=OrderLots();
if(delta<0) delta+=OrderLots();
по идее delta изначально нормализирована,
OrderLots наверное должен возвращать нормализированные даблы,
но каким-то образом иногда в редких случаях я получаю числа вроде 2.775557561562891e-17
то есть это почти нуль но не нуль.......
первый вопрос - это нормально?
второй вопрос - как я понимаю мне достаточно будет вторую нормализацию чтобы хвостов не появлялось?
третий вопрос (предчувствую что я все равно не пойму, но все таки спрошу):
сложение двух нормализованных чисел может давать ненормализованное?
P.S. прошу прощения что снова это поднимаю, но перечитывать снова всё это просто нет сил
P.S. прошу прощения что снова это поднимаю, но перечитывать снова всё это просто нет сил
Лучше проверьте самостоятельно на разных примерах, это даст понимание.
Единственное, я делаю не так:
а так
для чисел double. Не знаю, имеет ли это на самом деле значение, но по моему варианту я ни разу не столкнулся с ошибкой (сравнивать стараюсь только одинаковые типы переменных).
Не знаю, имеет ли это на самом деле значение, но по моему варианту я ни разу не столкнулся с ошибкой (сравнивать стараюсь только одинаковые типы переменных).