把双重投入

时间:2012-02-16 20:51:59

标签: c casting parallel-processing

我有一个应用程序,我必须将unsigned short数据存储在double平行向量中,以便能够轻松移动它。每当我真正需要数据时,我都会将它们转回unsigned short。我知道我的数据虽然保存在double向量中,但仍在unsigned short范围内,即存储的值均在02^16-1之间。

问题是,由于sizeof(double) = 8sizeof(unsigned short) = 2会导致数据丢失吗?我知道一个问题是如果数据在double形式时被改变了一小部分,它可能会四舍五入到另一个数字,但这不是我现在关注的问题。

感谢

2 个答案:

答案 0 :(得分:3)

您无需强制转换即可将short分配给double。短路和双路之间存在隐式转换。

double a;
short b = 42;

a = b;  // no cast, OK as there is an implicit conversion

如果您使用的是16位short和IEEE-754双精度double,则转换过程中不会损失精度。

为了给出一些观点,基本上对于单精度float,第一个无法表示的正整数值是16777217。因此,对于16位shortdouble,您应该没问题;)

答案 1 :(得分:0)

如果值不超过无符号短路的限制,则不会有损失。