打字输入加倍为整数和排序顺序

时间:2014-11-02 18:21:27

标签: c casting floating-point ieee-754

假设有一堆浮点数,那么它们可以通过orderer从最小到最大(即排序)。

如果我"转换" [1,2]浮点数到下面的整数,它们会保持相同的顺序吗?我的意思是,从比较实际位的角度来看,它会保留排序顺序吗?

union number {
  uint64_t i; // [3]
  double f;
};

根据numberi进行排序时排序f时,我会得到相同的排序吗?

换句话说,如果:

x.f < y.f

是否始终如此:

x.i < y.i

[1]根据我的阅读,实际用语是"type punning"

[2]我不能简单地&#34;演员&#34; (如在uint64_t i = (uint64_t)f中)因为这将简单地截断浮点数,对吗?

[3]它是否适用于int64_tuint64_t

1 个答案:

答案 0 :(得分:4)

换句话说,如果:x.f < y.f确实如此:x.i < y.i

不,这不适用于负浮动。例如,-1是0xbff0000000000000,-2是0xc000000000000000。