C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Точные вычисления в BCB5
mag23
Отправлено: 23.07.2004, 03:33


Ученик-кочегар

Группа: Участник
Сообщений: 7



Элементарные арифметическое вычисление: 10/3. На калькуляторе получится 3.333333333333
и т.д.

Пишем на C++:
float a,b;
a=10;
b=3;
float c=a/b;
Edit1->Text=c;
Результат c=3,33333325386047 (погрешность).
Можно конечно использовать ffFixed , но это не приведет к желаемому успеху если нужна высокая точность. А если переменную a взять равной 1000000000000000000, то результат получится вообще не дробный (целый). Если какой-нибудь выход из ситуации?
Daan
Отправлено: 23.07.2004, 07:35


Дежурный стрелочник

Группа: Участник
Сообщений: 62



Использовать специальные класса...

ЗЫ: В универе как курсачи такие классы пишут на 2 курсе...
AVC
Отправлено: 23.07.2004, 08:05


Ветеран

Группа: Модератор
Сообщений: 1583



CODE

float a=10, b=3, c=a/b;
double a1=10, b1=3, c1=a1/b1;
ShowMessage(FormatFloat("0.000000000000000",c));
ShowMessage(FormatFloat("0.000000000000000",c1));

Видим
3.333333253860474
3.333333333333333

Прочтите внимательно о типах данных (кол-во значащих цифр)
Deem
Отправлено: 27.07.2004, 10:53


Мастер участка

Группа: Участник
Сообщений: 327



Истину глоголит AVC. float — детская игрушка. Забудь. Double — то, что надо.

Вернуться в Вопросы программирования в C++Builder