假設有一堆浮點數,那麼它們可以按從小到大排序(即排序)。鍵入雙精度整數和排序順序
如果我把浮點數「轉換」爲像下面這樣的整數,它們會保持相同的順序嗎?我的意思是,從比較實際位的角度來看,它會保存排序順序嗎?
union number {
uint64_t i; // [3]
double f;
};
我會得到同樣的排序,當我按照i
和f
排序時排序的number
數組?
在又一也就是說,如果:
x.f < y.f
它始終認爲:
x.i < y.i
?
[1]從我讀,這樣做的實際任期是"type punning"
[2]我不能簡單地「投」(如uint64_t i = (uint64_t)f
),因爲這隻會截斷浮點數,對不對?
[3]它是否適用於int64_t
和uint64_t
?
關於[3]:它甚至不適用於'int64_t'和'uint64_t'之間的類型雙關。 – mafso 2014-11-02 18:27:57
你究竟在做什麼? – 2014-11-02 18:30:21
@PatriciaShanahan要對整數進行排序,可以比較兩個提示的各個單獨位的對,並且當遇到第一個不相等的對時,較大的數字是具有「1」的數字。我只是想知道是否同樣適用於浮點數...因此,在比較兩個雙精度數據時,我們可以對這個問題進行改寫,一點一點地進行排序,然後就像使用int進行排序一樣。我知道我可以用'<來比較這兩個數字,這只是一個想法... – 2014-11-02 18:44:53