You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求支持向最近整数取整且中间值向零取整的GNU舍入函数

GNU舍入函数需求问题

我查看了GNU提供的舍入函数集,没找到完全符合需求的函数。

根据GNU文档,rint()及其相关函数会按照当前舍入模式将数值舍入为整数,默认模式是「向最近整数取整」。这基本符合我的需求,但它处理中间值时是向无穷大方向取整,具体表现如下:

llround ( 1.500000 ==  2), want  1
llround (-1.500000 == -2), want -1
llrint  ( 1.500000 ==  2), want  1
llrint  (-1.500000 == -2), want -1

round()及其相关函数的文档说明:「这些函数与rint类似,但会将中间值向远离零的方向舍入,而非按当前舍入模式取最近整数。」

我没能找到任何默认舍入模式下,具备「中间值向零取整」语义的函数。

我的具体需求是:

  • 向最近整数取整
  • 中间值向零取整
  • 同时支持正负数值

请问是否存在这类函数?

目前我用了一个临时方案,虽然不满意但能满足当前有限的使用场景:

(float_val > 0) ? llrint(float_val - __FLT_EPSILON__) : llrint(float_val + __FLT_EPSILON__)

内容的提问来源于stack exchange,提问作者Tim Kane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:23:22