Windows API中的MulDiv便捷函数等同于(a*b)/c
,但它将a*b
的中间结果存储在64位variables中,然后再除以c
以避免整数溢出,其中a*b
大于MAX_INT
但(a*b)/c
不是。
WINBASEAPI int WINAPI MulDiv( _In_ int nNumber, _In_ int nNumerator, _In_ int nDenominator );
在Linux下编程时,是否有相当的便利function?
看来Linux没有相同的功能。
我创建了一个简单的内联函数(我没有用64位编译测试过)
inline int mul_div(int number, int numerator, int denominator) { long long ret = number; ret *= numerator; ret /= denominator; return (int) ret; }