Функция pow()
возвращает double
. Вы назначаете его переменной a
типа int
. Выполнение этого не «завершает» значение с плавающей запятой, оно усекает его. Итак, pow()
возвращает что-то вроде 99.99999 ... за 10 ^ 2, а затем вы просто отбрасываете часть .9999 .... Лучше сказать a = round(pow(10, i))
.