Я написал этот код, и первый результат цикла - 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
Могли кто-нибудь объясняет почему?
pow - это удваивает не целые числа. Помните преобразование из двойных в целые усечения. – drescherjm
Поскольку вы используете 'pow', вы должны прочитать: http://stackoverflow.com/questions/588004/is-floating-point-math-broken – NathanOliver
Не 100% уверены, что он должен использоваться как цель обмана. – NathanOliver