CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult

Float в C, 0.41 на самом деле 0.40999?

int main(void) {
    float x = 0.41;
    printf("%.50f",x);
}


и вижу

0.40999999642372131347656250000000000000000000000000


Не могу понять почему. Есть знатоки С? Расскажите плиз.
  • Вопрос задан
  • 3444 просмотра
Решения вопроса 1
Ocelot
@Ocelot
0,41 невозможно точно представить в виде суммы двоичных разрядов N1*(1/2)+N2*(1/4)+N3*(1/8)+... Только с некоторой ограниченной точностью. Подобно тому, как число 1/3 нельзя представить в виде конечной десятичной дроби.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs
C++ developer
Число хранится в двоичной форме. Почитайте вики для начала.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы