плавающая странная ошибка неточности в c [дубликаты]

На этот вопрос уже есть ответ:

Математика с плавающей точкой нарушена? 28 ответов

Сегодня случилось со мной странная вещь, когда я пытаюсь скомпилировать и выполнить вывод этого кода не то, что я ожидал. Вот код, который просто добавляет плавающие значения в массив float, а затем распечатывает его. Простой код:

int main(){
    float r[10];
    int z;
    int i=34;
    for(z=0;z<10;z++){
        i=z*z*z;
        r[z]=i;
        r[z]=r[z]+0.634;
        printf("%f\n",r[z]);
    }
}

выход

0.634000
1.634000
8.634000
27.634001
64.634003
125.634003
216.634003
343.634003
512.633972
729.633972

отметим, что из 27 появляется число после 0,634, которого там быть не должно. Кто-нибудь знает, почему это произошло? Это событие вызвано приближением с плавающей точкой? ..

P.S. У меня есть система Linux Debian, 64-битная

Спасибо все

Ответы на вопрос(4)

Ваш ответ на вопрос