我需要将C / C ++ double转换为64位二进制补码,其中Radix点位于第19位(含)。
这意味着对于我想要转换为
的格式到目前为止,我已经讨论过使用C标准库中的modf函数,但这并不能真正满足我的需求。我也看过Boost中的一些类型转换类,但我也找不到合适的解决方案。有没有人知道图书馆或简单的方法进行这种转换?也许更熟悉Boost的人可以指出我正确的方向。
如果this有帮助,这里有一些关于如何存储双打的文档。
编辑:
我有一个跟进问题,这真的是出于我自己的兴趣。什么是'Radix'?这有点像小数点。但是,在我学习离散快速傅立叶变换时,我唯一一次听到Radix这个术语。如果我没记错的话,Radix-II方法很快,因为需要计算DFT的乘法次数较少。
答案 0 :(得分:4)
这应该给出你想要的结果:
double d = someValue();
int64_t fixed_point = static_cast<int64_t>(d * (1024*1024));
答案 1 :(得分:1)
乘以2 ^ 20,然后转换为您定位的整数类型(可能很长)