- UID
- 4293
- 精华
- 6
- 积分
- 10633
- 威望
- 441 点
- 宅币
- 8683 个
- 贡献
- 850 次
- 宅之契约
- 0 份
- 最后登录
- 2024-4-26
- 在线时间
- 339 小时
- QQ
用户组: 真·技术宅
- UID
- 4293
- 精华
- 6
- 威望
- 441 点
- 宅币
- 8683 个
- 贡献
- 850 次
- 宅之契约
- 0 份
- 在线时间
- 339 小时
- 注册时间
- 2018-9-19
|
发表于 2018-11-21 10:54:20
|
显示全部楼层
#define DIVIDE_WITH_ROUND(N, D) (((N) == 0) ? 0 : ((((N) * 2)/(D)) + 1)/10) // 你确定最后是除10?前面 * 2,后面应该 / 2 才平衡啊!
// 重新优化一下(* 2 和 / 2 可以用位移优化):
#define DIVIDE_WITH_ROUND(N, D) (((N) == 0) ? 0 : ((((N) << 1) / (D)) + 1) >> 1)
// 如果再考虑一下有符号运算(我不确定N的位数,不敢直接用位运算取符号位,所以用更稳妥的比较运算代替):
#define DIVIDE_WITH_ROUND(N, D) (((N) == 0) ? 0 : ((((N) << 1) / (D)) + ((N) > 0)) >> 1)
|
|