我写了这段代码,第一次循环结果是99.为什么结果是99,什么时候应该是100?为什么a + = b * pow(10,c-i-1)== 99 C++?
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
int skt = 0;
int sk[3];
int nsk = 3;
sk[0]=1;
sk[1]=2;
sk[2]=8;
for (int i=0; i<nsk; i++)
{
skt = skt + (sk[i]*pow(10.0,nsk-i-1));
cout <<" "<<skt<<endl;
}
}
这个代码
99
119
127
的结果,但如果我使用的库CMATH它是正确的答案
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int skt = 0;
int sk[3];
int nsk = 3;
sk[0]=1;
sk[1]=2;
sk[2]=8;
for (int i=0; i<nsk; i++)
{
skt = skt + (sk[i]*pow(10.0,nsk-i-1));
cout <<" "<<skt<<endl;
}
}
这个代码的结果
100
120
128
莫非有人解释为什么?
战俘是双打而不是整数。记住从double到整数截断的转换。 – drescherjm
因为你使用的是'pow',所以你应该阅读:http://stackoverflow.com/questions/588004/is-floating-point-math-broken – NathanOliver
不是100%确定它是否应该用作伪装目标。 – NathanOliver