ABS() — эта функция возвращает абсолютное значение переданного ей числа (то же число, но без знака). Например,ABS(3) иABS(-3) вернут одно и то же значение 3.Int() ,Fix() иRound() позволяют по разному округлять числа:Int() возвращает ближайшее меньшее целое;Fix() отбрасывает дробную часть;Round() округляет до указанного количества знаков после запятой.
Однако Round может вернуть не совсем ожидаемый результат, т.к. функция применяет финансовое округление. По правилам данного округления если за последней к округлению цифрой стоит 5, то округляемую цифру увеличивают в том случае, если она нечетная и уменьшают, если четная.
Математическое же округление всегда округляет цифру в большую сторону, если за ней идет цифра 5 и выше, и отбрасывает остаток если 4 и меньше.
Т.е. если мы выполним такую строку кодаMsgBox Round(2.505, 2)
то результатом будет
2,5 , хотя предполагалось получить2,51 . Поэтому порой для округления лучше использоватьFormat :MsgBox Format(2.505, "#,##0.00")
но в этом случае мы получим не число в чистом виде, а текст. И если нужно именно число, то придется производить дополнительные преобразования:
MsgBox CDbl(Format(2.505, "#,##0.00"))
Так же, для математического округления, можно использовать и такой вариант:
MsgBox Application.Round(2.505, 2)
Но здесь стоит учитывать, что это не чистый VB и этот метод сработает только в Excel, т.к. по сути мы обращаемся к встроенной в Excel функции округления
ОКРУГЛ , которая применяет именно математическое округление.(ROUND) Rnd и командаRandomize используются для получения случайных значений (очень удобно для генерации имен файлов и в других ситуациях). Перед вызовом функцииRnd() необходимо выполнить командуRandomize для инициализации генератора случайных чисел.Dim lRundNum As Long, lMinNum As Long, lMaxNum As Long lMinNum = 1: lMaxNum = 100 Randomize lRundNum = Int(lMinNum + (Rnd() * lMaxNum)) MsgBox lRundNum
Sgn() - позволяет вернуть информацию о знаке числа. Возвращает 1, если число положительное, -1, если отрицательное и 0, если проверяемое число равно 0.Mod() - Делит два числа и возвращает только остаток. Например, выражение8 вернет число 2, т.к. без остатка(в виде дроби у результата деления) 8 делится на 3 только до 2-х(Mod 38 / 3 = 2,66666666666667 ).
При этом функция Mod учитывает и знак числа - если первое число или оба числа отрицательные, то результатом будет отрицательное число. Если же отрицательное только второе число - то результат будет положительным числом.
При попытке получить остаток при делении чисел с плавающей запятой результат может быть не тем, который ожидается, потому что перед выполнением деления оба числа округляются по математическим законам(5 и выше до большего, 4 и ниже - до меньшего). Например, выражение8 Mod 3.5 вернет 0, а выражение8 Mod 3.4 - 2.