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

 
Как задать формат числа, Как задать формат числа
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

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