c - Strange behaviour of the pow function -


while running following lines of code:

int i,a;      for(i=0;i<=4;i++)   {         a=pow(10,i);         printf("%d\t",a);     }    

i surprised see output, comes out 1 10 99 1000 9999 instead of 1 10 100 1000 10000.

what possible reason?

note
if think it's floating point inaccuracy in above loop when i = 2, values stored in variable a 99.

but if write instead

a=pow(10,2); 

now value of comes out 100. how possible?

i can't spell c, can tell why.

you have set a int. pow() generates floating point number, in cases may hair less 100 or 10000 (as see here.)

then stuff integer, truncates integer. lose fractional part. oops. if needed integer result, round may better way operation.

be careful there, large enough powers, error may large enough still cause failure, giving don't expect. remember floating point numbers carry precision.


Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -