将exp用于指数形式(C ++,1.#INF)

时间:2018-11-07 03:09:00

标签: c++

在c ++的exp函数中可以使用指数形式吗?

我猜1.00e + 006等于10 ^ 6。

但是,如果我将e用于exp函数,则会给出错误的结果1.#INF,如下所示。

cout << exp(1.00e+006) << endl; // result : 1.#INF
cout << exp(10^6) << endl; // result : 162755

实际上,在我的代码中,我使用了“ double A”变量,由于某种原因,它具有指数形式(例如e + 006)。我必须将A更改为exp(A)。有什么问题吗?

2 个答案:

答案 0 :(得分:1)

  • exp(1e6)是e 10 6
  • 10^6是10 XOR 6
  • 1e6是1000000

答案 1 :(得分:1)

exp()函数对于解释C ++中的浮点文字不是必需的,实际上,它完全可以完成其他操作。计算e到x。

e到百万分之一的数字是如此之大,这并不奇怪,它溢出了两倍,给您1.#INF结果。

^运算符不进行幂运算。它按位进行异或。

  • 10是二进制形式的1010
  • 6的二进制格式是0110
  • xor的结果是二进制的1100,即12。而第12位的e接近162755。