Страница 1 из 1

Как округлить число в индикаторе

Добавлено: 22 янв 2017, 23:40
Владимир
Добрый день! У меня возник вопрос в индикаторе возникла необходимость из числа "double" получить "int".
(заданный период индикатора поделить на два, но ведь заданный период может быть и нечётный?)
Пробовал функции decimal.Round(), MathRound() - их нет в документации, компилятор выдаёт ошибку!!!
Как быть подскажите.

Re: Как округлить число в индикаторе

Добавлено: 23 янв 2017, 06:59
evge
Метод Math.Round

а так же

Math.Ceiling
Math.Floor
Math.Truncate

в классе Math

а так же

Явные преобразования типов

Однако если преобразование не может быть выполнено без риска потери данных, для компилятора требуется, чтобы пользователь выполнил явное преобразование, которое называется приведением. Приведение является способом явно указать компилятору, что нужно сделать преобразование, и что известно, что может быть потеря данных. Для выполнения приведения заключите тип, в который производится приведение, в скобки перед преобразуемым значением или переменной. Следующая программа выполняет приведение типа double к типу int. Без приведения эта программа скомпилирована не будет.

Код: Выделить всё

                double x = 1234.7;
                int a;
                // Cast double to int.
                a = (int)x;

Re: Как округлить число в индикаторе

Добавлено: 23 янв 2017, 07:04
evge
Не заглядывая в документацию помню, что про Math есть упоминание в документе "скрипты индикаторов и стратегий".

Re: Как округлить число в индикаторе

Добавлено: 23 янв 2017, 11:37
Leeuwenhoek
Деление чисел типа int целочисленное. То есть

Код: Выделить всё

            double d = 7.3;
            int i = (int)d;//i =7
            int j = i / 2;//j = 3

Re: Как округлить число в индикаторе

Добавлено: 23 янв 2017, 18:03
KakTak
там целый список команд с матч

Re: Как округлить число в индикаторе

Добавлено: 23 янв 2017, 21:59
Владимир
Спасибо за подсказку! Получилось.

Код: Выделить всё

int i=Math.Round(1.23);
//выдаёт ошибку, поэтому не всё можно использовать

Re: Как округлить число в индикаторе

Добавлено: 24 янв 2017, 07:42
evge
Владимир писал(а):

Код: Выделить всё

int i=Math.Round(1.23);
//выдаёт ошибку, поэтому не всё можно использовать


Math.Round (double) - не изменяет тип (см. в документации возвращаемое значение), а просто округляет значение для данного типа, если на входе double на выходе будет так же double, округленное до нужного числа знаков после запятой (второй параметр в Math.Round).

Нужно явное преобразование

Код: Выделить всё

int i = (int)Math.Round(1.23);