【发布时间】:2018-11-07 16:28:06
【问题描述】:
std::pow() 的返回值有问题。基本上,我在代码中有以下行:
#include <cmath>
int main()
{
double rate = 1.0033333333333334;
int m = 360;
unsigned int period = 1;
double res = std::pow(rate, -(m-period+1));
}
res 的值为inf。但是,当我在调试时将std::pow(rate, -(m-period+1)) 粘贴到Visual Studio 手表时,它的正确值是0.30179586515268314。有谁知道这种差异的根源是什么?
【问题讨论】:
-
@NathanOliver 你考虑过
#include <bits/stdc++.h>吗? *鸭子* -
@LightnessRacesinOrbit 对不起,我不想成为炮灰:)
-
std::pow(1.0033333333333334, -360)-- 这行代码有 1) 没有分号,2)pow的返回值没有分配给任何东西。那么这行代码到底是如何在你的程序中使用的呢?请发帖minimal reproducible example。 -
@SebastianKucharzyk -- 这不是它在 SO 上的工作方式。您发布的代码不是minimal reproducible example。很快就会有 2 个
#include语句、一个int main()和一个cout的值。请注意至少有 2 个人如何完成您应该完成的工作。
标签: c++ c++11 c++-standard-library cmath