在C ++中从complex
投射到int
的最佳方式是什么?
答案 0 :(得分:3)
很难回答你的问题,因为一般来说,没有办法做到这一点。从数学上讲,将复数(a + bi)转换为实数(a + 0i)意味着什么?你可以放弃复杂的术语,或者将自己限制在b = 0的情况下,我想;第一种选择似乎不够优雅,第二种选择并不总是有效。
您需要解决的第二个问题是,在C ++中,complex
,float
和double
存在long double
模板,其中没有一个具有无损转换到int
。所以我想如果你弄清楚第一部分的细节,那么你必须确保演员的其余部分仍然有效。
如果你想要做的是从complex
中提取实际组件,你可以这样做:
complex<double> myComplex = /* ... */
double real = myComplex.real();
然后可能
int realInt = static_cast<int>(real);
答案 1 :(得分:0)
您可以重载operator int();