Типы даных

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

dr.SeM

#1
Здраствуйте!
У меня следующая проблема:
когда к переменной типа 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 и так далее?
 
04.09.2006
2 566
3
#2
результат получаеться скакамито лишними цифрами.
Это не лишние цифры, это погрешность округления из-за ограниченной точности представления чисел.
Но как ето сделать, при етом мне нужен точный результат скажем 0,01; 0,02 и так далее?
round( x * 100 ) / (float)100
 
Y

YAUHEN

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

gamecreator

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