【发布时间】:2016-05-26 14:51:48
【问题描述】:
我的程序由于某种原因出现故障,我发现这是因为我的计算归结为 pow(-0.2, 0.2),它在调用时解析为 -nan(ind)。
如果它是一个非常小或非常大的数字,我会理解,但为什么 C++ 将此计算解析为 -nan(ind)?有没有办法让它输出正确的值(-0.72477966367)?
【问题讨论】:
-
你只需要解决
x ^ (1/5),还是指数也可以是其他数字? -
指数也可以是其他数字,这使事情变得复杂:\
-
是
x ^ (k / odd_number)的形式吗? -
这是不允许的,因为在大多数情况下,负值的非整数指数会给出复杂的结果。虽然理论上有一些指数会给出真实的结果(包括 1/5),但允许它们是没有意义的,因为它们不能用浮点数精确表示。
-
如果你想要一个复杂的结果,你可以使用带有
std::complex参数的std::pow的重载。