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

 

Добрый день! Подскажите, пожалуйста, как мне округлить дробное число от 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

 
По идее то что мне надо это математические функции типа "ceil", только стандартная функция в mt4 тут не подходит
 
Ortex:
По идее то что мне надо это математические функции типа "ceil", только стандартная функция в mt4 тут не подходит
Стандартные функции вполне подходят. Просто надо предварительно преобразовать значение. А потом сделать обратное преобразование.
 

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));
 
tara:

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

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

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

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

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

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

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

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

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

 
AlexeyVik:
Ну ты чуток лишка хватнул. В 1961м я в первый класс пошёл и прекрасно помню что такое "Феликс" но что-то не помню чтобы к этому компьютеру прилагались программисты. :)
Было создано 3 вычислительных центра, в Ногинске - ВЦ3 (на базе КБ Гуревича). Под него запустили программистский техникум. 
 
tara:
Просто подскажу: для целочисленного округления в большую сторону самый эффективный способ: I=F+1: где I - целое, F - не очень. 
вопрос-то был не про целочисленное округление, а про округление к большему.
 
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

 
AlexeyVik:

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

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

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


Да, но в том же техникуме девушек учили чаще умножать, чем делить. 
Причина обращения: