Информация об изменениях

Сообщение Re[6]: Простейшее форматирование плавающего в строку от 12.09.2019 5:04

Изменено 12.09.2019 7:45 rg45

Re[6]: Простейшее форматирование плавающего в строку
Здравствуйте, c-smile, Вы писали:

R>>Ну вместо 1e+10 напишем 1e+20 и получится то же самое


CS>А что выведет твоя printf функция если ей дать 1e+20 число? Количество зеленых попугаев, а не число ибо все что дальше единиц и после запятой там уже будет случайными числами (в данном контексте).


Выведет ровно то же самое, что выводят стандартные потоки: https://ideone.com/2iDTT4. И, что бы она ни вывела, она никогда не породит UB, и это главное.

CS>Т.е. для doubles больше std::numeric_limits<double>::digits10 / 100 исходная задача вообще смысла не имеет. Такие вот, брат, пироги.


Исходная задача
Автор: Went
Дата: 10.09.19
формулировалась так: "Мне нужно превратить стандартными средствами float в строку...". Стандартными, понимаешь? Ни одно из стандартных средств не накладывает никаких ограничений на диапазоны входных значений. Mы вполне можем вывести в стандартный поток и 1е+100, и 1e+300, без каких-либо ограничений. И получим всего лишь потерю точности, но не UB, и не откровенную белиберду.
Re[6]: Простейшее форматирование плавающего в строку
Здравствуйте, c-smile, Вы писали:

R>>Ну вместо 1e+10 напишем 1e+20 и получится то же самое


CS>А что выведет твоя printf функция если ей дать 1e+20 число? Количество зеленых попугаев, а не число ибо все что дальше единиц и после запятой там уже будет случайными числами (в данном контексте).


Выведет ровно то же самое, что выводят стандартные потоки: https://ideone.com/2iDTT4. И, что бы она ни вывела, она никогда не породит UB, и это главное.

CS>Т.е. для doubles больше std::numeric_limits<double>::digits10 / 100 исходная задача вообще смысла не имеет. Такие вот, брат, пироги.


Исходная задача
Автор: Went
Дата: 10.09.19
формулировалась так: "Мне нужно превратить стандартными средствами float в строку...". Стандартными, понимаешь? Ни одно из стандартных средств не накладывает никаких ограничений на диапазоны входных значений. Mы вполне можем вывести в стандартный поток и 1е+100, и 1e+300, и получим всего лишь потерю точности, но не UB, и не откровенную белиберду.