ripper |
Отправлено: 02.07.2003, 17:55 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Считывание данных из БД Access происходит каким-то странным образом.
В БД есть поле типа "Одинарное с плавающей точкой".
Формат поля -фиксированный
Число десятичных знаков — 2
Тоесть в поле содержаться данные типа 94,45 15,00
И когда я смотрю чему равны загружаемые значения проскакивают числа типа 95,34000000005 и т.д.(вместо 95,34)
Данные загружаю с помощью
float znach1;
znach1=DataSource1->DataSet->Fields->Fields[2]->AsFloat;
Как мне задать формат переменной znach1, чтобы он был XXXXX.XX? |
|
Георгий |
Отправлено: 02.07.2003, 20:00 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
всё нормально — это невозможность точного преобразования из двоичной в десятичную систему.
формат 7.2 (при выводе на экран) — можно задать в printf:CODE | AnsiString str;
float z=95.34;
str.printf("%7.2f",z); | |
|
Admin |
Отправлено: 03.07.2003, 22:25 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Разумеется — ошибка округления действительных чисел.
Что можно еще посоветовать — тип float слишком мал,
используйте double
А правильно выводить можно и через функцию FloatToStrF()
double x = 125524.25;
ShowMessage(FloatToStrF(x, ffFixed, 10, 2));
Отредактировано Admin — 3 Jul 2003, 22:26
|
|