Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Проблема при переходе из одного типа в другой.   Найти похожие ветки 

 
AlexLebed   (2004-05-15 11:12) [0]

В чём проблема?

Я задал массив
pki:array[1..10] of single = (0.0018,0.00185,0.0019,0.00195,0.002,0.00189,0.002,0.0021,           0.0018,0.0018);

А когда я вывожу его на форму,

TEdit[i].text:=floattostr(pki[i]);

То в Edit’ах массив отображаются с погрешностью в десятитысячных, то есть получаю массив

0,00179999996908009        
0,00185000000055879
0,0019000000320375
0,00194999994710088
0,0020000000949949
0,00188999995589256
0,0020000000949949
0,00209999992512167
0,00179999996908009  
0,00179999996908009    

Как избавиться от этого безобразия. Для меня это очень важно.


 
begin...end ©   (2004-05-15 12:55) [1]

Edit[I].Text := FloatToStrF(pki[I], ffFixed, 6, 5)
Или поиграйся с функцией RoundTo из модуля Math.


 
AlexLebed   (2004-05-15 12:58) [2]

Будь добр, поясни, пожалуйста

Edit[I].Text := FloatToStrF(pki[I], ffFixed, 6, 5)


 
begin...end ©   (2004-05-15 13:01) [3]

ffFixed - формат, в котором будет выводиться число. ffFixed означает, что оно будет выводиться не в научном формате, а в обычном, как у тебя.
6 - общее количество десятичных цифр.
5 - количество цифр после запятой.

FloatToStrF + F1


 
AlexLebed   (2004-05-15 14:11) [4]

А как быть, если я этот массив(первоначальный) передаю в dll-библиотеку? В библиотеку он в каком виде передаётся? Как проверить (учтя то, что библиотека не моя)? Если в том, какой меня не устраивает, то как быть?


 
begin...end ©   (2004-05-15 14:21) [5]

pki: array[1..10] of Real

Попробуй так.


 
evvcom ©   (2004-05-15 15:18) [6]

Тип данных Single занимает всего 4 байта. Этого крайне недостаточно для представления числа с той точностью, которая Вам требуется.

> begin...end ©   (15.05.04 14:21) [5]
> pki: array[1..10] of Real

Real и Integer - типы, длина в байтах которых, а значит и точность зависит от реализации языка. Поэтому здесь лучше указать независимый от реализации языка тип Double.


> array[1..10] of ...
> ... передаю в dll-библиотеку

Чтобы в дальнейшем меньше путаться, я считаю, что лучше привыкать, что все индексы начинаются с нуля, как это и используется в подавляющем большинстве случаев. Есть исключения, но в основном они обоснованные, а Вы, я сомневаюсь, что сможете обосновать необходимость своих 1..10, а не 0..9



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
14-1084368392
a3a3ello
2004-05-12 17:26
2004.05.30
delphi и XP


1-1084812609
Dmitry_k
2004-05-17 20:50
2004.05.30
Ссылка в ветке TreeView


8-1080054213
Pa5ha
2004-03-23 18:03
2004.05.30
IndexedBuffer


14-1084263033
PVOzerski
2004-05-11 12:10
2004.05.30
Нужна ли наука России? И нужна ли русской науке РАН?


1-1084283285
Delphi5.01
2004-05-11 17:48
2004.05.30
Thread1Execute (При этом не происходит RePaint формы)