我正在使用 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++ 中,A
和 B
是内置的 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/