#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?
Потому что вы не указали такое форматирование, и потому что по умолчанию поплавки форматируются не так. Вы можете изменить форматирование с помощью манипуляторов ввода-вывода.