Во-первых, мой контекст - это контекст автора компилятора, которому нужно преобразовать литералы с плавающей запятой (строки) в значения с плавающей запятой/двойные числа. Я не занимался программированием с плавающей запятой последние 15 лет, поэтому я почти уверен, что это совершенно глупый вопрос новичка.
double res;
errno=0;
*res = strtod((const char*)literal,NULL);
if (errno==ERANGE) throw_a_literal_out_of_range_exception();
return res;
но в библиотеке времени выполнения c нет функции "strtof"?
РЕДАКТИРОВАТЬ: Чтобы уточнить. Я уже знаю, что строка 'literal' является допустимым шаблоном для числа C с плавающей запятой. Он уже прошел проверку регулярными выражениями. Я просто хочу проверить, есть ли проблема с диапазоном/точностью.
Причина в исходном коде Eiffel, который пользователь может написать
a := {REAL_32} 3.1415
b := {REAL_32} 3.0E200
Чтобы преобразовать записанное число с плавающей запятой в 32-битное число с плавающей запятой. Думаю, во втором случае компилятор должен определить, что значение выходит за пределы допустимого диапазона, и выдать ошибку или хотя бы предупреждение.