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 — то, что надо.
|
|