Когда я назначаю int переменной с плавающей запятой, я печатаю переменную. Почему вывод равен 1, а не 1,0?

#c

Вопрос:

 #include lt;iostreamgt; int main() {  float i = 1;  std::cout lt;lt; i;  return 0; }  

Я читал C Primer, там говорилось, что когда мы присваиваем int переменной с плавающей запятой, дробная часть записывается как 0. Затем я попробовал код выше, я не смог понять вывод.

Комментарии:

1. Это зависит std::cout от того, напечатать это 0 или нет, а не от float самого

2. Если вы назначите 1.0f свою переменную с плавающей точкой, она также будет указывать как 1 . Источник ценности не имеет значения. Как говорится в ответах, это значение по умолчанию для преобразования значений с плавающей запятой в текст.

Ответ №1:

Ну, это зависит std::cout от того, печатать это 0 или нет, не i само по себе. std::cout решите не печатать это 0 , чтобы все, что вы можете видеть, было 1 .

Вы можете изменить его, используя lt;iomanipgt; std::setprecision() :

 #include lt;iostreamgt; #include lt;iomanipgt;  int main() {  float i = 1;  std::cout lt;lt; std::fixed lt;lt; std::setprecision(1) lt;lt; i;  return 0; }  

Это выше печатает:

 1.0  

Ответ №2:

Почему вывод равен 1, а не 1,0?

Потому что вы не указали такое форматирование, и потому что по умолчанию поплавки форматируются не так. Вы можете изменить форматирование с помощью манипуляторов ввода-вывода.