Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
3. `string FormatMoney(double amount)` форматирует двойное значение `сумма` как строку, представляющую сумму в валюте. Она форматирует сумму с двумя десятичными знаками, заменяет десятичную точку запятой и вставляет пробелы через каждые три цифры для удобочитаемости. Также в конце добавляется символ валюты, полученный из `AccountInfoString(ACCOUNT_CURRENCY)`.
Большое спасибо за это. Однако эти функции уже реализованы в библиотеке (даже с более надежными результатами, чем у вас), но с другими именами.
Здравствуйте @amrali, спасибо за ваш вклад.
Может быть, это ошибка?
Я ожидал, что второй отпечаток будет "0.0001".
Если это ошибка, как ее исправить? Если нет, то что не так в моем коде?
Спасибо.
Здравствуйте, @amrali, спасибо за ваш вклад.
Может быть, это ошибка?
Я ожидал, что второй отпечаток будет "0.0001".
Если это ошибка, как ее исправить? Если нет, то что не так в моем коде?
Спасибо.
Выведите шестнадцатеричные представления и вы поймете, что разброс далек от истинного реального значения 0.0001 (это из-за ошибок округления при вычитании).
Поэтому необходимо использовать процедуры округления.
Здесь есть небольшие различия, которые вы должны заметить:
StripError() округляет до 16-й значащей цифры 0.00009999999999998899 (0 не учитываются).
Round(x, 16) округляет до 16-й цифры после десятичной точки 0.00009999999999998899.
Плавающая точка имеет бесконечное число десятичных дробей. Это вы не понимаете, что такое плавающая точка и что некоторые числа не могут быть представлены точно. (например, 1/10.)
Формат с плавающей точкой двойной точности - Википедия.
См. также Операнд ==. - Форум по программированию на MQL4 (2013)
Если вы хотите видеть правильное количество цифр, преобразуйте его в строку с нужной/желаемой точностью.
Вопрос про дециму в marketinfo() - Форум по программированию на MQL4 (2016)
Плавающая точка имеет бесконечное число десятичных дробей. Это вы не понимаете, что такое плавающая точка и что некоторые числа не могут быть представлены точно. (например, 1/10.)
Формат двойной точности с плавающей точкой - Википедия
См. также Операнд ==. - Форум по программированию на MQL4 (2013)
Если вы хотите видеть правильное количество цифр, преобразуйте его в строку с нужной/желаемой точностью.
Вопрос про дециму в marketinfo() - Форум по программированию на MQL4 (2016)
Каков наиболее оптимизированный способ печати только значащих цифр в удвоенных числах.
Эта функция отлично работает для 99,9% чисел, но у нее есть проблемы с круглыми числами, такими как 1.0000000000.
Моя проблема заключается в том, что мне нужно удалить незначащие цифры, и по какой-то причине я не могу сделать это, используя только @Trunc,
поэтому я решил использовать что-то вроде этого:
Это работает точно так, как нужно, давая мне наименьшую возможную строку для всех чисел, но мне интересно, можно ли это оптимизировать и по-прежнему получать наименьшую строку с круглыми числами, такими как 1.00000000.
Спасибо
Только что понял, что я использую
Слегка модифицированная версия вашего
и вот код
Моя проблема заключается в том, что мне нужно удалить незначащие цифры, и по какой-то причине я не могу сделать это, используя только @Trunc,
поэтому в итоге я использую что-то вроде:
Это работает точно так, как нужно, давая мне наименьшую возможную строку для всех чисел, но мне интересно, можно ли это оптимизировать и по-прежнему получать наименьшую строку с круглыми числами, такими как 1.00000000
Спасибо
Извините, вам нужно понять, что такое значащие цифры, так как я нахожу, что ваш код путает основные понятия.
Спасибо, что уделили время, и да, я не совсем уверен, что понимаю "значащие цифры".
В основном мне нужно "напечатать" самое короткое возможное число. Например:
1.0000000 -> 1
1.0090000 -> 1.009
123.00100 -> 123.001
Для меня "значимые цифры" означают: цифра, которая изменяет значение числа, если ее удалить, поэтому нули в конце числа не являются значимыми.
Кстати, после последнего обновления Windows функция Round(double, int) приводит к блокировке MT4. Первый код, который я выложил, работал идеально, а со вчерашнего вечера он полностью замораживает клиент MT4.
Спасибо, что уделили время, и да, я не совсем уверен, что понимаю "значащие цифры".
В основном мне нужно "напечатать" самое короткое возможное число. Например:
1.0000000 -> 1
1.0090000 -> 1.009
123.00100 -> 123.001
Для меня "значимые цифры" означают: цифра, которая изменяет значение числа, если ее убрать, поэтому нули в конце числа не являются значимыми.
Кстати, после последнего обновления Windows функция Round(double, int) приводит к блокировке MT4. Первый код, который я выложил, работал идеально, а со вчерашнего вечера он полностью замораживает клиент MT4.