Если вы хотите, чтобы выходные данные были идентичны входным, тогда да, вам нужно прочитать их как строки и сохранить строки для последующего вывода.
Почему? При работе с числами с плавающей запятой компьютер не может представлять большинство десятичных дробных частей точно в двоичном виде. Таким образом, в числе, таком как 2,4, внутреннее представление не будет точно 2,4, оно будет немного другим. Большую часть времени библиотеки ввода / вывода C / C ++ будут брать такое двоичное число и печатать 2.4, но для некоторых чисел это может напечатать что-то вроде 2.40000000001 или 2.399999999.
Так вот почему вы хотите сохранить исходные строки.