引子:在看《龍書》的時候有個float到dword的轉換函式不理解。
dword d3d::ftodw(float f)
背景: 有些函式需要傳入dword型別的變數,但是該變數的實際意義是用小數來表示的。這裡就需要在不改變float本身值的情況下傳入乙個dword變數。
一段網上的**
dword dw = 0;
float f1 = 0.25;
cout<<"f1 = "
cout<<"dw = *((dword*)&f1): "
cout<<"f1 = 0.0: "
cout<<"f1 = *((float*)&dw): "<
執行結果是
f1 = 0.25
dw = *((dword*)&f1): 1048576000
f1 = 0.0: 0
f1 = *((float*)&dw): 0.25
這裡利用的是編譯器轉型的手段,對於任何位元組對等的型別都適用,比如float到int,double到long等等。這樣的轉換可以保證二進位制資料不丟失,從而保證資料的完整性。
C 中 DWORD和int的區別
int 代表int,dword 代表 unsigned long int會隨著機器位數的不同而發生變化,比如在16位機上為16為,在32位機上為32位,在64位機上為64位。看看最原始的定義就知道了。dword是無符號的,相當於unsigned long 它是mfc的資料型別。而int是有符號性的,...
C 中 DWORD和int的區別
int 代表int,dword 代表 unsigned long int會隨著機器位數的不同而發生變化,比如在16位機上為16為,在32位機上為32位,在64位機上為64位。看看最原始的定義就知道了。dword是無符號的,相當於unsigned long 它是mfc的資料型別。而int是有符號性的,...
JAVA中float與double的區別
float是單精度型別,精度是6位有效數字,取值範圍是10的 38次方到10的38次方,float占用4個位元組的儲存空間 double是雙精度型別,精度是15位有效數字,取值範圍是10的 308次方到10的308次方,double占用8個位元組的儲存空間 當你不宣告的時候,預設小數都用double...