是否有相当于Linux的MulDiv?

时间:2013-02-14 10:18:48

标签: c++ linux winapi

Windows API中的MulDiv便利功能相当于(a*b)/c,但它在分割前将a*b 的中间结果存储在64位变量中它由c来避免整数溢出,其中a*b大于MAX_INT(a*b)/c不是。{/ p>

WINBASEAPI
int
WINAPI
MulDiv(
    _In_ int nNumber,
    _In_ int nNumerator,
    _In_ int nDenominator
    );

在Linux中编程时,是否有等效的便利功能?

1 个答案:

答案 0 :(得分:3)

似乎没有Linux的等效功能。

我创建了一个有效的简单内联函数(我还没有用64位编译测试它)

inline int mul_div(int number, int numerator, int denominator) {
    long long ret = number;
    ret *= numerator;
    ret /= denominator;
    return (int) ret;
}