printf изменяет значение при использовании% .22f - PullRequest
2 голосов
/ 12 октября 2011

У меня проблема с базовыми типами.

#include<stdio.h>

int main()
{
     printf("%.22f",0.30);
     return 1;
}

Вывод, который я получаю, составляет 0,2999999999999999888978

Почему 0,3 конвертируется в меньшее значение

Любая помощь высоко ценится

Nandish

1 Ответ

9 голосов
/ 12 октября 2011

Это потому, что 0.30 не может быть точно представлено в двоичной форме с плавающей точкой. Внутри может быть сохранено только приближение к 0.30. Поэтому, когда вы распечатываете все это, вы получите немного другое число.

http://en.wikipedia.org/wiki/Floating_point

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...