Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ну, нет же -- повводили double, int -- мудохаются и разработчики и пользователи с этим double, с точностью, с нормализацией.
Я не против разных типов, так правильней. Просто не понятно, почему "0.07" = "0.07000...01". Просто зачем так? Мне как обычному, не машине, человеку не ясен смысл (документацию сейчас изучу дополнительно в поисках высшего смысла)... Почему бы не использовать точные (целые или дробные) значения, зачем эти точности_точности?
так написали же разработчики в документации пояснение [https://www.mql5.com/ru/docs/basis/types/double]:
Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.
рез DoubleToString. Если нужна нормализация то NormalizeDouble.
В том то и беда, что эти 2 функции дают "Не точные" результаты, хоть вывод на экран, хоть нормализация. Одно выводит с точным окончанием "0000000001", другое приплюсовывает к числу "0.0020" или еще что-то. Но не то, что нужно.
Это, знаете, как мы пишем "5 + 3 = 8", а на самом деле оно является "+5 + +3 = +8". Была бы настройка компилятора "Точные, Не точные величины"...
так написали же разработчики в документации пояснение [https://www.mql5.com/ru/docs/basis/types/double]:
Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.
Я не против разных типов, так правильней. Просто не понятно, почему "0.07" = "0.07000...01". Просто зачем так? Мне как обычному, не машине, человеку не ясен смысл (документацию сейчас изучу дополнительно в поисках высшего смысла)... Почему бы не использовать точные (целые или дробные) значения, зачем эти точности_точности?
Окей... Постараюсь принять. Тогда объясните, почему не помогает ни одна из придложенных функций, чтобы ВСЕ-ТАКИ привести дробное число к точному (как в калькуляторе) значению? Обе фушкции приведения значений не справляются с выводом корректных значений. Вернее, получается справиться только путем записывания информации в тип string.
почему не помогает?
функция https://www.mql5.com/ru/docs/convert/normalizedouble прекрасно решает проблему
В том то и беда, что эти 2 функции дают "Не точные" результаты, хоть вывод на экран, хоть нормализация. Одно выводит с точным окончанием "0000000001", другое приплюсовывает к числу "0.0020" или еще что-то. Но не то, что нужно.
Это, знаете, как мы пишем "5 + 3 = 8", а на самом деле оно является "+5 + +3 = +8". Была бы настройка компилятора "Точные, Не точные величины"...
Не может DoubleToString выводить такие значения. Вы ошибку при ее использовании совершили, а потом жалуетесь что "пчелы делают не правильный мед". Конкретно:
Вы вначале double конвертируете в string. Затем string неявно конвертируете в double и приравниваете ее к Var. А затем Var снова неявно конвертируете в стринг и выводите на печать. При этом предупреждения компилятора о том, что происходит неявное преобразование Вы просто игнорируете:
implicit conversion from 'number' to 'string' TestInclude.mq5 14 11
implicit conversion from 'string' to 'number' TestInclude.mq5 15 15
так написали же разработчики в документации пояснение [https://www.mql5.com/ru/docs/basis/types/double]:
Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.
Хромой учит слепого.
Болконский, все числа в компьютерах хранятся в двоичной системе счисления. Не пудри новичку мозги!
Хромой учит слепого.
Болконский, все числа в компьютерах хранятся в двоичной системе счисления. Не пудри новичку мозги!
ты о чём? верни с аватарки свою голову из запрокинутого в нормальное положение -- а то приток крови в твои мозги почти прекратился.
я привёл цитату из документации [https://www.mql5.com/ru/docs/basis/types/double] -- приведу ещё раз:
Необходимо помнить, что вещественные числа хранятся в памяти компьютера с некоторой ограниченной точностью в двоичной системе счисления, в то время как общепринятой в использовании является десятичная система счисления. Поэтому многие числа, которые точно записываются в десятичной системе, в двоичной системе можно записать только в виде бесконечной дроби.
-- прочитай по буквам выделенное, хотя, ты же только что сказал что ты слепой и хромой -- ну, попроси кого-нибудь почитать
p.s. если ты с такой трактовкой не согласен -- то обращайся в сервисдеск
ты о чём? ...
Ты не ссылайся на доки, а лучше скажи в какой системе счисления хранится integer, а double? Short?