Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
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
|
|
![]() |
|
|
7:04:2008, 07:26
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 817 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Специализация: C++ Репутация: 31
|
результат получаеться скакамито лишними цифрами. Это не лишние цифры, это погрешность округления из-за ограниченной точности представления чисел. Но как ето сделать, при етом мне нужен точный результат скажем 0,01; 0,02 и так далее? round( x * 100 ) / (float)100 |
|
Сообщение
#2
|
|
|
|
7:04:2008, 14:22
|
|
Новенький ![]() Группа: Программист Сообщений: 25 Регистрация: 23:12:2007 Из: Ивано-Франковськ Пользователь №: 14 416 Специализация: c++ builder Репутация: 0
|
Спасибо!
|
|
Сообщение
#3
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 11:43 |