Функция MulDiv

Declare Function MulDiv Lib "kernel32" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
MulDiv умножает два 32-битных числа и делит полученный 64-битный результат на 32-битное число, окpугляя получаемое значение до длижайшего целого. Может использоваться для избежания ошибки переполнения Возвращаемое значение

В случае ошибки (если результат превышает 32-битное значение или используется деление на 0) функция возвращает -1. В успешном случае возвращается результат умножения/деления


Параметры
nNumber
Первое число для умножения
nNumerator
Второе число для умножения
nDenominator
Третье число, на которое делится произведение первых двух чисел

Пример
' Демострация того, как избежать ошибки переполнения
Dim result As Long

' Без функции MulDiv вы получите ошибку переполнения
' так как результать умножения превышает 32-битное значение
'result = -134217728 * 243 / 110592 ' строка закомментирована

' С MulDiv вы можете избежать этой ошибки
result = MulDiv(-134217728, 243, 110592)

Категория
Расчеты