簡體   English   中英

如何在 C 的 uint64_t 變量中存儲浮點值?

[英]How to store float value in uint64_t variable in C?

我有一組uint64_tuint64_t *data; 在我需要存儲 4 種不同數據類型的地方: intchar*boolfloat 我通過簡單轉換為(uint64_t)解決了每種類型,但它不適用於 float:

float val = 1.5f;
uint64_t var = (uint64_t) val;
printf("%.1f", (float) var); // prints 1.0

有沒有辦法在比強制轉換更低級別的變量之間移動數據? 我嘗試以各種方式組合轉換,但結果是0.01.0

...將float值存儲在uint64_t變量中...

復制它。

float var_f = 1.5f;
uint64_t var_u64;
_Static_assert(sizeof var_f <= sizeof var_u64, "Wide float");
memcpy(&var_u64, &var_f, sizeof var_f);

恢復

memcpy(&var_f, &var_u64, sizeof var_f);
printf("%g\n", var_f);

暫無
暫無

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

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