Разбор небольших чисел с плавающей запятой с помощью std::istreamC++

Программы на C++. Форум разработчиков
Anonymous
Разбор небольших чисел с плавающей запятой с помощью std::istream

Сообщение Anonymous »

У меня есть программа, которая считывает координаты некоторых точек из текстового файла с помощью std::istringstream, а затем проверяет правильность синтаксического анализа, вызывая оператор потока bool().
В целом работает хорошо, но для очень малых (по величине) значений оператор возвращает false в некоторых реализациях стандартной библиотеки, хотя синтаксический анализ кажется корректным. Под «очень маленькими» я подразумеваю значения ниже наименьшего положительного (суб)нормального значения float, которое составляет 1,17549e-38f (

Код: Выделить всё

1.4013e-45f
).
Рассмотрим программу:

Код: Выделить всё

#include 
#include 

void parse( const char * zstr ) {
std::istringstream s( zstr );
float f;
s >> f;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79805884/parsing-of-small-floats-with-stdistream[/url]

Вернуться в «C++»