Общие вопросы по разработке > Как округлить число в индикаторе
-
- Сообщения: 84
- Зарегистрирован: 14 ноя 2016, 02:17
- Благодарил (а): 3 раза
- Поблагодарили: 5 раз
Как округлить число в индикаторе
Добрый день! У меня возник вопрос в индикаторе возникла необходимость из числа "double" получить "int".
(заданный период индикатора поделить на два, но ведь заданный период может быть и нечётный?)
Пробовал функции decimal.Round(), MathRound() - их нет в документации, компилятор выдаёт ошибку!!!
Как быть подскажите.
(заданный период индикатора поделить на два, но ведь заданный период может быть и нечётный?)
Пробовал функции decimal.Round(), MathRound() - их нет в документации, компилятор выдаёт ошибку!!!
Как быть подскажите.
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Как округлить число в индикаторе
Метод Math.Round
а так же
Math.Ceiling
Math.Floor
Math.Truncate
в классе Math
а так же
Явные преобразования типов
а так же
Math.Ceiling
Math.Floor
Math.Truncate
в классе Math
а так же
Явные преобразования типов
Однако если преобразование не может быть выполнено без риска потери данных, для компилятора требуется, чтобы пользователь выполнил явное преобразование, которое называется приведением. Приведение является способом явно указать компилятору, что нужно сделать преобразование, и что известно, что может быть потеря данных. Для выполнения приведения заключите тип, в который производится приведение, в скобки перед преобразуемым значением или переменной. Следующая программа выполняет приведение типа double к типу int. Без приведения эта программа скомпилирована не будет.
Код: Выделить всё
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Как округлить число в индикаторе
Не заглядывая в документацию помню, что про Math есть упоминание в документе "скрипты индикаторов и стратегий".
никогда такого не было и вот опять
-
- Сообщения: 9
- Зарегистрирован: 12 дек 2016, 17:45
- Поблагодарили: 3 раза
Re: Как округлить число в индикаторе
Деление чисел типа int целочисленное. То есть
Код: Выделить всё
double d = 7.3;
int i = (int)d;//i =7
int j = i / 2;//j = 3
-
- Сообщения: 84
- Зарегистрирован: 14 ноя 2016, 02:17
- Благодарил (а): 3 раза
- Поблагодарили: 5 раз
Re: Как округлить число в индикаторе
Спасибо за подсказку! Получилось.
Код: Выделить всё
int i=Math.Round(1.23);
//выдаёт ошибку, поэтому не всё можно использовать
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Как округлить число в индикаторе
Владимир писал(а):Код: Выделить всё
int i=Math.Round(1.23);
//выдаёт ошибку, поэтому не всё можно использовать
Math.Round (double) - не изменяет тип (см. в документации возвращаемое значение), а просто округляет значение для данного типа, если на входе double на выходе будет так же double, округленное до нужного числа знаков после запятой (второй параметр в Math.Round).
Нужно явное преобразование
Код: Выделить всё
int i = (int)Math.Round(1.23);
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя