Разбор небольших чисел с плавающей запятой с помощью 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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