簡體   English   中英

C ++浮點表示

[英]C++ floating point representation

我試圖從我從這里得到的十六進制表示形式創建一個float 對於32.50002的表示32.50002 ,該站點將IEEE 754十六進制表示形式表示為0x42020005

在我的代碼中,我有: float f = 0x42020005; 但是,當我打印該值時,得到的是1.10E+9而不是32.50002 為什么是這樣?

我正在使用Microsoft Visual C ++ 2010。

當通過=float變量分配值時,不分配其內部表示,而是分配其值。 十進制的0x42020005是1107427333,這就是您要分配的值。

float的基礎表示無法以獨立於平台的方式進行檢索。 但是,做一些假設(即, float實際上是使用IEEE 754格式的),我們可以欺騙一下:

float f;
uint32_t rep = 0x42020005;
std::memcpy(&f, &rep, sizeof f);

將給出期望的結果。

0x42020005是一個int ,其值是1107427333。

float f = 0x42020005; 等於float f = 1107427333;

0x42020005實際上是0x42020005int值。

您可以嘗試此代碼。 應該工作...使用聯合:

union IntFloat {
  uint32_t i;
  float f;
};

並在需要轉換值時調用它。

union IntFloat val;
val.i = 0x42020005;
printf("%f\n", val.f);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM