плавающая странная ошибка неточности в 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-битная
Спасибо все