Strange behaviour of the pow function

You have set a to be an int. pow() generates a floating point number, that in SOME cases may be just a hair less than 100 or 10000 (as we see here.)

Then you stuff that into the integer, which TRUNCATES to an integer. So you lose that fractional part. Oops. If you really needed an integer result, round may be a better way to do that operation.

Be careful even there, as for large enough powers, the error may actually be large enough to still cause a failure, giving you something you don’t expect. Remember that floating point numbers only carry so much precision.

Leave a Comment