如何在C ++中将复杂的<float>变量转换为float?

时间:2015-05-26 22:02:55

标签: c++ types casting

我的代码中有一个变量浮点数。我知道它只有一个真实的部分,我只想将它转换为浮点变量。

这应该是超级简单的我觉得但你不能只是输入演员而且在搜索一个多小时之后无法找到答案。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

实际上没有“默认”方式从complex<float>投射到float,因为有很多解释:

  1. 你想要复数的大小吗? (sqrt(re*re + im*im)
  2. 你想要幅度平方吗?这避免了昂贵的平方根。
  3. 你只想要真正的部分吗?
  4. 一些使用数字信号处理(例如X-Midas,Midas 2K,PicklingTools)做很多事情的框架明确地不允许这样的转换。它们使用户选择适当的转换,以便用户不会丢失转换中的信息。话虽如此,如果你只想要真正的组件,我觉得上面的一些答案都很好。这是一个完整的独立程序,用于说明:

    #include <complex>
    #include <iostream>
    using namespace std;
    
    int main()
    {
      complex<float> cf(1.1, 2.2);
      float real_portion_only = cf.real();
    
      cout << real_portion_only << endl;
    }
    

    编译行和运行如下:

      % g++ comp.cc -o comp
      % ./comp
      1.1