link10780 link10781 link10782 link10783 link10784 link10785 link10786 link10787 link10788 link10789 link10790 link10791 link10792 link10793 link10794 link10795 link10796 link10797 link10798 link10799 link10800 link10801 link10802 link10803 link10804 link10805 link10806 link10807 link10808 link10809 link10810 link10811 link10812 link10813 link10814 link10815 link10816 link10817 link10818 link10819 link10820 link10821 link10822 link10823 link10824 link10825 link10826 link10827 link10828 link10829 link10830 link10831 link10832 link10833 link10834 link10835 link10836 link10837 link10838 link10839 link10840 link10841 link10842 link10843 link10844 link10845 link10846 link10847 link10848 link10849 link10850 link10851 link10852 link10853 link10854 link10855 link10856 link10857 link10858 link10859 link10860 link10861 link10862 link10863 link10864 link10865 link10866 link10867 link10868 link10869 link10870 link10871 link10872 link10873 link10874 link10875 link10876 link10877 link10878 link10879 link10880 link10881 link10882 link10883 link10884 link10885 link10886 link10887 link10888 link10889 link10890 link10891 link10892 link10893 link10894 link10895 link10896 link10897
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