我有一个应用程序,我必须将unsigned short
数据存储在double
平行向量中,以便能够轻松移动它。每当我真正需要数据时,我都会将它们转回unsigned short
。我知道我的数据虽然保存在double
向量中,但仍在unsigned short
范围内,即存储的值均在0
和2^16-1
之间。
问题是,由于sizeof(double) = 8
和sizeof(unsigned short) = 2
会导致数据丢失吗?我知道一个问题是如果数据在double
形式时被改变了一小部分,它可能会四舍五入到另一个数字,但这不是我现在关注的问题。
感谢
答案 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位short
和double
,您应该没问题;)
答案 1 :(得分:0)
如果值不超过无符号短路的限制,则不会有损失。