Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Типы даных, При сложении нескольких перем. float результат с лишними цыфрами
dr.SeM
Вставить ник
сообщение 5:04:2008, 16:41
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 25
Регистрация: 23:12:2007
Из: Ивано-Франковськ
Пользователь №: 14 416
Специализация: c++ builder



Репутация: - 0 +


Здраствуйте!
У меня следующая проблема:
когда к переменной типа 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 и так далее?
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 2)
European
Вставить ник
сообщение 7:04:2008, 07:26
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 1 817
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316
Специализация: C++



Репутация: - 31 +


Цитата(dr.SeM @ 5:04:2008 - 18:41) *
результат получаеться скакамито лишними цифрами.

Это не лишние цифры, это погрешность округления из-за ограниченной точности представления чисел.
Цитата(dr.SeM @ 5:04:2008 - 18:41) *
Но как ето сделать, при етом мне нужен точный результат скажем 0,01; 0,02 и так далее?

round( x * 100 ) / (float)100
Подняться вверх 
 
Сообщение #2
dr.SeM
Вставить ник
сообщение 7:04:2008, 14:22
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 25
Регистрация: 23:12:2007
Из: Ивано-Франковськ
Пользователь №: 14 416
Специализация: c++ builder



Репутация: - 0 +


Спасибо! smile.gif
Подняться вверх 
 
Сообщение #3


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 11:43
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net