Matlab int16()C等价?

时间:2016-09-08 06:29:08

标签: c matlab int rounding uint16

在Matlab中有一个名为int16的函数,例如将值加到下一个整数。 C中是否有任何简单的等价物?

特别是对于负数的舍入,例如-1.65到-2和1.33到-1。

1 个答案:

答案 0 :(得分:4)

int16函数,对值进行舍入和钳位。所以等价物看起来像这样

int16_t  int16( double d ) 
{
  return isnan(d) ? 0 : (d > 32767.0) ? 
    32767 : 
    (d <-32768.0) ? -32768 : (int16_t)round(d)) ;
}

编辑:对于NAN输入,int16也返回0,所以也要处理它。

另请注意,代码确实需要区分大小写,因为对于NAN而言未定义C中double到int16_t的转换以及目标整数范围之外的值。