Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从双精度转换为有符号短精度?_C - Fatal编程技术网

C 如何从双精度转换为有符号短精度?

C 如何从双精度转换为有符号短精度?,c,C,将变量从double转换为signed short最简单的方法是什么 我对DSP完全是个初学者。在其他C语言环境中,我以以下方式完成此任务: double myDouble = - 3.14; myDouble = floor(myDouble); signed short = (signed short) myDouble; 令人惊讶的是,这在VisualDSP++中不适用于负数,但它仍然可以编译 我使用的是ADSP-BF548 EZ-KIT LITE(blackfin)和编程环境Visu

将变量从
double
转换为
signed short
最简单的方法是什么

我对DSP完全是个初学者。在其他C语言环境中,我以以下方式完成此任务:

double myDouble = - 3.14;

myDouble = floor(myDouble);
signed short = (signed short) myDouble;
令人惊讶的是,这在VisualDSP++中不适用于负数,但它仍然可以编译


我使用的是ADSP-BF548 EZ-KIT LITE(blackfin)和编程环境VisualDSP++5.0。

如果您想向零进位,这就足够了

double myDouble = - 3.14;
short s = myDouble;
如果您想向负无穷大方向取整,只需添加
floor

double myDouble = - 3.14;
short s = floor(myDouble);
在这两种情况下,都不需要从
double
short
进行显式强制转换,但保留它可能是一个好主意,只是为了防止编译器发出警告

当然,您有责任确保原始值在
short
范围内


如果这个值在应该的时候“不起作用”(不管这意味着什么),那么您使用的编译器必须被破坏。

我没有答案,但作为一种解决办法,您不能检查该值是否为
您所拥有的将不会编译-您没有给您的
带符号的short
一个名称。你能给我们看看实际的代码吗?当然我应该先问什么是“不起作用”。错误?结果的随机值?什么是“不起作用”?在C语言中,一旦名称错误被修复,上述方法必须适用于范围内的所有数字。这与音频有关吗?您是否正在尝试将浮点音频样本转换为PCM 16位样本?(我这样问是因为你提到你正在与DSP打交道。)@Lister先生:OP没有提供足够的细节来确定他所说的含糊不清的“不起作用”的说法是什么意思。