首页 > 解决方案 > 将 int 128 除法提升为浮点数

问题描述

我是新来的。我的项目中有 128 位整数(int128_t boost/multiprecision/cpp_int.hpp),我需要将其除以浮点数。在我目前的平台上,我有限制,不能使用boost/multiprecision/float128.hpp. 现在仍然不支持clang https://github.com/boostorg/math/issues/181

boost数学库有什么办法吗?

标签: c++c++11boost

解决方案


也许将 int128 拆分为 64 位数字?

i128 = h64 * (1<<64) + l64 然后您可以轻松加载这些值 shift 并将它们在 64 位浮点上求和以获得等效数字。

或者,由于浮点硬件实际上只有 64 位精度,您可以将 int128 向下移动,直到它适合 64 位,然后将其转换为浮动,然后再向上移动,但前者实际上可能更快,因为它是更简单。


推荐阅读