Ожидая, что ваш код будет печатать эти завершающие нули, ничем не отличается от ожидающего его печати 5.0 - 4.0
только потому, что вы инициализировали переменную как float j = 5.0 - 4.0;
.
С точки зрения представления с плавающей точкой нет такой вещи, как «Я указывал конечные нули во время инициализации». Номера с плавающей запятой не являются строками. Это цифры. И есть бесконечные разные способы выразить то же число, что и последовательность человекочитаемых символов в тексте вашей программы. В исходном коде программы 1.000
совпадает с 1.00
и совпадает с 0.1e1
- все они представляют одинаковое число.
Это означает, что когда придет время преобразовать число с плавающей запятой обратно в текстовое представление для cout
, библиотека не будет знать (и не заботится), какой текст вы использовали первоначально. Вы можете влиять на текстовый вывод, изменяя данные точности, ширины и других форматов (например, использовать научный формат и т. Д.), Но нет такой вещи, как «вывести ее так же, как я написал ее в исходном коде».
«хотя я указал их во время« Нет, у вас нет ». При компиляции '1.000' точно так же, как' 1.0''' 1.00000000000000000'. – Kryptos
@rahul У вас, похоже, есть серьезные заблуждения относительно представления данных и как они преобразуются в текст, читаемый человеком. –
haha no no Я просто хотел узнать, есть ли какая-то конкретная причина по этому поводу, глядя на вывод cout, который вы не можете определить, если его float или int или double .i знает, как float или ints или подписанные числа или беззнаковые числа хранящиеся в памяти –