Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка типа float - "Floating point overflow"


Автор: Нитонисе 25.5.2011, 14:29
Использую переменную типа float, конвертирую ее в текст, но выскакивает ошибка. С чем она связана?
Код

float tem = 18;
RichEdit1->Lines->Add("Температура = " + FloatToStrF(tem,ffGeneral,3,3) + " °C."); // выскакивает ошибка


Сообщение об ошибке:

http://www.radikal.ru

Автор: SeekerRZD 29.5.2011, 07:11
tem, ffGeneral, 3,3 - призыв к компилятору распаковать число в 3 знака из них 3 - после запятой...  
попробуй tem, ffGeneral, 6,3 - 6 знаков из них 3 - после запятой

Автор: Нитонисе 29.5.2011, 19:34
Цитата(SeekerRZD @  29.5.2011,  07:11 Найти цитируемый пост)
попробуй tem, ffGeneral, 6,3 - 6 знаков из них 3 - после запятой

Здесь 6 - это число значащих цифр. Например число 1.23456789 будет представлено как 1.2345. А число 0.123456789, как 0.123456. На что влияет последний аргумент функции - непонятно.

Автор: Usper 30.5.2011, 08:36
FloatToStrF в режиме ffGeneral преобразовывает число в строку которая выглядит "обычно" (не знаю как выразится smile), если такое число может быть умещено в строку длинной Precision, или в строку в "научном виде". Во втором случае параметр digits определяет "минимальное количество цифр в степени" числа. Но работает это странно, у меня при 
Код

double tem = -123671E-15;
S = FloatToStrF(tem,ffExponent,3,2);

S = -1.24E-10,
Код

double tem = -123671E-15;
S = FloatToStrF(tem,ffExponent,3,3);

S = -1.24E-010,
Код

double tem = -123671E-15;
S = FloatToStrF(tem,ffExponent,3,4);

S = -1.24E-10.
Что же касается кода из первого поста, то я не вижу тут никакого криминала, у меня он не вызвает никаких ошибок.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)