gpt4 book ai didi

c++ - C/C++ 中的数值转换

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:59 24 4
gpt4 key购买 nike

我需要将 C/C++ double 转换为 64 位二进制补码,其中基数点位于第 19 位(含)。

这意味着对于我要转换成的格式

  • 0x0000 0000 0010 0000 是数字 1
  • 0xFFFF FFFF FFF0 0000是数字-1
  • 0x0000 0000 0000 0001 是 0.95 x 10^-6
  • 0xFFFF FFFF FFFF FFFF 是 -0.95 x 10^-6

到目前为止,我已经考虑过使用 C 标准库中的 modf 函数,但这并不能真正满足我的需要。我也看过 Boost 中的一些类型转换类,但我也找不到合适的解决方案。有谁知道图书馆或简单的方法来进行这种转换?也许更熟悉 Boost 的人可以为我指明正确的方向。

如果this完全有帮助,这里有一些关于如何存储 double 的文档。

编辑:

我有一个跟进问题,这真的是为了我自己的兴趣。什么是'Radix'?这里有点像小数点。但是,我唯一一次听到 Radix 这个词是在我学习离散快速傅里叶变换时。如果我没记错的话,Radix-II 方法很快,因为计算 DFT 所需的乘法较少。

最佳答案

这应该会给出您想要的结果:

double d = someValue();
int64_t fixed_point = static_cast<int64_t>(d * (1024*1024));

关于c++ - C/C++ 中的数值转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1179006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com