私はこのコードを書いて、ループ結果の最初の時間は99です。なぜ結果99が100になるべきですか?私は図書館cmathを使用する場合なぜ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
の結果は、それがこのコードの結果正解
#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