• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Типы даных

  • Автор темы dr.SeM
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

dr.SeM

Здраствуйте!
У меня следующая проблема:
когда к переменной типа float прибавить несколько раз скажем 0,01 результат получаеться скакамито лишними цифрами. К примеру код:
Код:
float inc;
float stop;
stop=0;
inc=StrToFloat(Edit1->Text.c_str());
do
{
stop=stop+inc;
M->Lines->Add(stop);  //TMemo
}while (stop<50);
результат для первых 3-х проходов цикла будет :0,00999999977648258;0,0199999995529652;0,0299999993294477;
Может их нужно округлить?Но как ето сделать, при етом мне нужен точный результат скажем 0,01; 0,02 и так далее?
 
E

European

результат получаеться скакамито лишними цифрами.
Это не лишние цифры, это погрешность округления из-за ограниченной точности представления чисел.
Но как ето сделать, при етом мне нужен точный результат скажем 0,01; 0,02 и так далее?
round( x * 100 ) / (float)100
 
Y

YAUHEN

хотя ответ уже есть, но всё же:
Memo->Lines->Add(FloatToStrF(stop,ffFixed,8,2));
8-количество цифр,2-количество цифр после запятой
 
G

gamecreator

не нужно использовать float. это глючный тип.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!