c++ - boost::multiprecision::cpp_int:我想确认两个正 cpp_int 的除法截断为零

标签 c++ boost multiprecision

我正在使用 boost::multiprecision::cpp_int,但我无法确认两个正 cpp_int 的除法截断为 0;即,那个

boost::multiprecision::cpp_int A {11};
boost::multiprecision::cpp_int B {4};

boost::multiprecision::cpp_int C = A / B; // 2, right?

在 C++ 中,AB 是内置的 integer 类型,标准要求向 0 截断,所以答案是 C 等于 2

我假设 cpp_int 的工作方式相同 - cpp_int 的答案也是 2

但是,我无法找到对这一假设的证实。我还在 boost::multiprecision::cpp_int 的源代码中查找了几分钟,但我发现确认行为并不简单。

我想确认 boost::multiprecision::cpp_int 在除以两个正整数时按预期工作 - 即,它将结果截断为 0

谢谢!

最佳答案

整数除法或模运算符的主要选项是向零舍入或向负无穷大舍入。尽管向负无穷大舍入在数学上更正确,但 C/C++ 向零舍入。当被除数和除数的符号不同时,这会影响除法或模数。向零舍入意味着模的结果与被除数(或零)具有相同的符号,而向负无穷大舍入意味着模的结果与除数(或零)具有相同的符号。

关于c++ - boost::multiprecision::cpp_int:我想确认两个正 cpp_int 的除法截断为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22675697/

相关文章:

c++ - 在 openmp 中使用不同线程组装 vector 时缩放比例不佳

c++ - boost 侵入列表 Hook

c++ - 编写 HugeInteger 类

c++ - 使用 Boost.Random 从种子生成多精度整数

c++ - 链接库时未定义对 `boost::filesystem::path_traits::dispatch 的引用?

c++ - 如何从 boost int256_t 中获取以 2 为底的对数?

c++ - Qt Creator 在 Mac 上启动调试失败

C++ 对象模型转换?

c++ - 通过 Winapi 以编程方式编辑 Windows 审核策略时出现权限错误

c++ - 为自己的类型扩展 boost property tree get