我有以下方法在固定点上乘以两个32位数
19.13
格式。但我认为这种方法存在问题:
1.5f
向上舍入为2.0f
,而-1.5f
向上舍入为-1.0f
。
在我看来,-1.5
应该向下舍入到-2.0f
。
首先,当前的舍入是否有意义,如果没有,我该如何更改它 更一致吗?
static OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b) {
OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
temp += 4096;
assert((temp >> 13) <= (OPJ_INT64)0x7FFFFFFF);
assert((temp >> 13) >= (-(OPJ_INT64)0x7FFFFFFF - (OPJ_INT64)1));
return (OPJ_INT32) (temp >> 13);
}