Скачать MetaTrader 5

Округлить дробное число в большую сторону

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть свободные компьютеры? Подключи их к MQL5 Cloud Network и заработай!
Alexandr Balasyan
511
Alexandr Balasyan 2014.11.04 08:04 

Добрый день! Подскажите, пожалуйста, как мне округлить дробное число от X значения после запятой в большую сторону?

Например.

X = 2; число 0.022; Результатом должно быть 0.03

X= 2; число 0.020;Результатом должно быть 0.02

X= 3; число 0.0047;  Результатом должно быть 0.005

X= 3;  число 1.000. Результатом должно быть 1

 X= 2;  число 1.045. Результатом должно быть 1.05

Alexandr Balasyan
511
Alexandr Balasyan 2014.11.04 08:53  
По идее то что мне надо это математические функции типа "ceil", только стандартная функция в mt4 тут не подходит
Victor Nikolaev
Модератор
14508
Victor Nikolaev 2014.11.04 09:16  
Ortex:
По идее то что мне надо это математические функции типа "ceil", только стандартная функция в mt4 тут не подходит
Стандартные функции вполне подходят. Просто надо предварительно преобразовать значение. А потом сделать обратное преобразование.
Vitalie Postolache
12135
Vitalie Postolache 2014.11.04 09:23  

0.0047 и 1.045 и так округляются как надо с NormalizeDouble(), без дополнительных усилий.

С остальными как-то так:

double n=0.0123, m;

int x=3;

if(n-NormalizeDouble(n,x) > 0) m = NormalizeDouble(n,x)+MathPow(10,-x);

а можно и так:

double n=0.0123, m;

int x=3;

m=MathPow(10,-x)*MathCeil(n*MathPow(10,x));
Alexey Viktorov
6898
Alexey Viktorov 2014.11.04 15:21  
tara:

Будьте проще и народ к вам потянется: 

1. Округление классическое: I=F+0.5; где I - целое, а F - нет. 

2. Округление "вверх": I=F+1;

3. Округление "вниз": I=F-1; 

Если кто предложит лучший вариант, могу предложить пивка.

ЗЫ В подмосковном техникуме при в/ч 19161 (г.Ногинск) этому приему учили программистов в 1960-е. 

Ну ты чуток лишка хватнул. В 1961м я в первый класс пошёл и прекрасно помню что такое "Феликс" но что-то не помню чтобы к этому компьютеру прилагались программисты. :)
Алексей Тарабанов
7214
Алексей Тарабанов 2014.11.04 15:23  
Просто подскажу: для целочисленного округления в большую сторону самый эффективный способ: I=F+1: где I - целое, F - не очень. 
Vitalie Postolache
12135
Vitalie Postolache 2014.11.04 15:24  
AlexeyVik:
Ну ты чуток лишка хватнул. В 1961м я в первый класс пошёл и прекрасно помню что такое "Феликс" но что-то не помню чтобы к этому компьютеру прилагались программисты. :)

Феликса механики прoграммировали, кувалдочкой )))

Но были и ЭВМ, тёплые, ламповые.

Алексей Тарабанов
7214
Алексей Тарабанов 2014.11.04 15:28  
AlexeyVik:
Ну ты чуток лишка хватнул. В 1961м я в первый класс пошёл и прекрасно помню что такое "Феликс" но что-то не помню чтобы к этому компьютеру прилагались программисты. :)
Было создано 3 вычислительных центра, в Ногинске - ВЦ3 (на базе КБ Гуревича). Под него запустили программистский техникум. 
Vitalie Postolache
12135
Vitalie Postolache 2014.11.04 15:59  
tara:
Просто подскажу: для целочисленного округления в большую сторону самый эффективный способ: I=F+1: где I - целое, F - не очень. 
вопрос-то был не про целочисленное округление, а про округление к большему.
Alexey Viktorov
6898
Alexey Viktorov 2014.11.04 16:49  
Ortex:

Добрый день! Подскажите, пожалуйста, как мне округлить дробное число от X значения после запятой в большую сторону?

Например.

X = 2; число 0.022; Результатом должно быть 0.03

X= 2; число 0.020;Результатом должно быть 0.02

X= 3; число 0.0047;  Результатом должно быть 0.005

X= 3 число 1.000. Результатом должно быть 1

 X= 2 число 1.045. Результатом должно быть 1.05

Если выделенное это количество знаков для округления, то это решается достаточно просто.

Если Х=2 то MathCeil(0.022*100)/100

Если Х=3 то умножать и делить надо на 1000

Алексей Тарабанов
7214
Алексей Тарабанов 2014.11.04 17:01  
AlexeyVik:

Если выделенное это количество знаков для округления, то это решается достаточно просто.

Если Х=2 то MathCeil(0.022*100)/100

Если Х=3 то умножать и делить надо на 1000


Да, но в том же техникуме девушек учили чаще умножать, чем делить. 
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий