Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Математика. 6 класс. Учебник. Никольский С.М., Потапов М.К. М.: 2012. - 256 с
Округление.
Какая бурная тема получилась. С округлением кажется МТ4 работает правильно.
Я имел виды, чтобы NormalizeDouble(0.055,2) не округлил число "0.055" до "0.06", а обрезал его до "0.05".
У меня непонятки с этими функциями МКЛ. Я не особо понимаю, зачем цены "1.0015223567" округлять функцией NormalizeDouble, если нужно лишь взять ОБРЕЗАННОЕ число до нужно знака.
То есть чтобы NormalizeDouble(1.001526789, 5) дало "1.00152" результат. Не нужно его до "1.00153" округлять. Для этого должна быть функция RoundDouble =)
Такое возможно? Или нужно постоянно округлять и получать не те числа, которые хочешь?
Вы бы уже определились, что ли. То округляет:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Округление чисел в МТ4 через NormalizeDouble
Roman Starinskij, 2016.01.21 10:03
Здравствуйте. Подскажите, в чем дело.
Почему функция NormalizeDouble(0.055,2) округляет число "0.055" до "0.06"?
Это же не функция огругления дробей.
то не округляет:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Округление чисел в МТ4 через NormalizeDouble
Roman Starinskij, 2016.01.25 14:30
Какая бурная тема получилась. С округлением кажется МТ4 работает правильно.
Я имел виды, чтобы NormalizeDouble(0.055,2) не округлил число "0.055" до "0.06", а обрезал его до "0.05".
У меня непонятки с этими функциями МКЛ. Я не особо понимаю, зачем цены "1.0015223567" округлять функцией NormalizeDouble, если нужно лишь взять ОБРЕЗАННОЕ число до нужно знака.
То есть чтобы NormalizeDouble(1.001526789, 5) дало "1.00152" результат. Не нужно его до "1.00153" округлять. Для этого должна быть функция RoundDouble =)
Такое возможно? Или нужно постоянно округлять и получать не те числа, которые хочешь?
Ну и для экспериментов:
Какая бурная тема получилась. С округлением кажется МТ4 работает правильно.
Я имел виды, чтобы NormalizeDouble(0.055,2) не округлил число "0.055" до "0.06", а обрезал его до "0.05".
У меня непонятки с этими функциями МКЛ. Я не особо понимаю, зачем цены "1.0015223567" округлять функцией NormalizeDouble, если нужно лишь взять ОБРЕЗАННОЕ число до нужно знака.
То есть чтобы NormalizeDouble(1.001526789, 5) дало "1.00152" результат. Не нужно его до "1.00153" округлять. Для этого должна быть функция RoundDouble =)
Такое возможно? Или нужно постоянно округлять и получать не те числа, которые хочешь?
Если надо обрезать - обрезайте, если надо округлять - округляйте. Функция NormalkizeDouble() округляет и это именно то, что надо чаще всего.
С чего взяли, что для округления должно быть RoundDouble(), а не NormalizeDouble(). Вы что ли этот мир создавали? А ничего, что шар катается, а у квадрата четыре угла?
Какая бурная тема получилась.
Всё от того, что топикстартер не читает документацию по языку и не слушает, что ему говорят
Немного не понятно следующее поведение деление и округление дробей.
Есть 2 уравнения:
0.06-0.02 = 0.03999999999999999
0.06-0.024 = 0.036
Воспользовавшись рекомендованной функцией NormalizeDouble мы получим такие результаты:
0.03999999999999999 = 0.04
0.036 = 0.04
В первом примере действительно нужно получить значение 0.04, но во втором - 0.03 (так считает обычный калькулятор).
Использовать NormalizeDouble нужно, потому что дроби возвращаются не полные, но во втором случае функция возвращает не корректные значения, а не использовать ее для первого варианта тоже нельзя.
Немного не понятно следующее поведение деление и округление дробей.
Есть 2 уравнения:
0.06-0.02 = 0.03999999999999999
0.06-0.024 = 0.036
Воспользовавшись рекомендованной функцией NormalizeDouble мы получим такие результаты:
0.03999999999999999 = 0.04
0.036 = 0.04
В первом примере действительно нужно получить значение 0.04, но во втором - 0.03 (так считает обычный калькулятор).
Использовать NormalizeDouble нужно, потому что дроби возвращаются не полные, но во втором случае функция возвращает не корректные значения, а не использовать ее для первого варианта тоже нельзя.
Ваш обычный калькулятор считает не правильно, должно быть так:
Всё от того, что топикстартер не читает документацию по языку и не слушает, что ему говорят
если N+1 знак < 5, то N-ый знак сохраняют, а N+1 и все последующие обнуляют;
если N+1 знак ≥ 5, то N-ый знак увеличивают на единицу, а N+1 и все последующие обнуляют;
Извиняюсь но так и не поняла, почему округляя на '2' сразу не возможно получить = 0.06000000
v1 = 0.06000000, v2 = 0.06000000
v1 = 0.06000000, v2 = 0.05000000
---
Извиняюсь но так и не поняла, почему округляя на '2' сразу не возможно получить = 0.06000000
Извиняюсь но так и не поняла, почему округляя на '2' сразу не возможно получить = 0.06000000
Когда нормализуется только один знак, то там все просто: 0, 1, 2, 3, 4 -> 0, а 5, 6, 7, 8, 9 -> 1
Если нормализуется два знака, то в расчет принимаются двузначные числа: 0 - 49 -> 0, а 50 - 99 -> 1. Ведь если число 1.49 нужно округлить до целых, то неужели должны получить 2, до которого 51-а сотая против имеющихся 49-и сотых расстояния до 1?
Тоже самое с трехзначными, четырехзначными и т. д.