Matlab int16() C 等价物?
Matlab int16() C equivalent?
在 Matlab 中有一个名为 int16 的函数,例如将值加倍到下一个整数。在 C 中有任何简单的等价物吗?
特别是对于负数的舍入,例如-1.65 到 -2 和 1.33 到 -1。
int16 函数,对值进行舍入和限制。所以等价物看起来像这样
int16_t int16( double d )
{
return isnan(d) ? 0 : (d > 32767.0) ?
32767 :
(d <-32768.0) ? -32768 : (int16_t)round(d)) ;
}
编辑:int16 也 returns 0 用于 NAN 输入,所以也要处理它。
另请注意,代码确实需要区分大小写,因为在 C 中,double 到 int16_t 的转换对于 NAN 和目标整数范围之外的值是未定义的。
在 Matlab 中有一个名为 int16 的函数,例如将值加倍到下一个整数。在 C 中有任何简单的等价物吗?
特别是对于负数的舍入,例如-1.65 到 -2 和 1.33 到 -1。
int16 函数,对值进行舍入和限制。所以等价物看起来像这样
int16_t int16( double d )
{
return isnan(d) ? 0 : (d > 32767.0) ?
32767 :
(d <-32768.0) ? -32768 : (int16_t)round(d)) ;
}
编辑:int16 也 returns 0 用于 NAN 输入,所以也要处理它。
另请注意,代码确实需要区分大小写,因为在 C 中,double 到 int16_t 的转换对于 NAN 和目标整数范围之外的值是未定义的。