NAN 使用 pow 评估指数时,但如果我迭代,答案正确?
NAN when evaluating exponential using pow but correct answer if I iterate?
使用 cmath 库中的pow()
时,我得到了 NaN,但如果我迭代功率的长度,它会起作用吗?
我正在尝试评估y=0.05*(1+-2.01655)^x
90 < x < 180
和我在使用pow((1+-2.01655),x)
时在哪里接收 NaN,但在 for 循环中迭代会得到正确答案?值得注意的是,excel也表现出类似的问题(无法评估原始形式,但可以评估分段形式(。
double var = -1.01655;
double final = 1;
for(int i=0 ; i<ceil(x); i++){
final *= var;
}
final = 0.05 * final;
取一个数字的小数指数意味着第 n 个根运算;例如pow(2, 3.0 / 2.0) == sqrt(pow(2, 3))
.
负数通常具有虚根。 双打的std::pow
只处理实数。 当然,1 - 2.01655
是负数,因此您的方程只有 x 整数值的实际结果。我想你会发现 x 的整数值生成结果,非整数值生成 NaN。循环工作的原因是您计算的是整数幂,而不是分数幂。
请参阅 cpp首选项;有关错误处理的部分:
如果基数是有限的和负的,exp是有限的和非整数的,则 发生域错误,并且可能发生范围错误。
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 迭代时从向量和内存中删除对象
- 如何在c++迭代器类型中包装std::chrono
- 带过滤器的现代迭代c++集合
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- C++矢量迭代
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 擦除while循环中迭代的元素
- 实现一个在集合上迭代的模板函数
- 对于set上的循环-获取next元素迭代器
- 在向量内的向量上迭代
- 为什么output_editor Concept不需要output_e迭代器标记
- TSP递归解的迭代形式
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- NAN 使用 pow 评估指数时,但如果我迭代,答案正确?
- 使用迭代和递归计算阶乘时的不同答案