Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.033 c
3-1083912884
TransparentGhost
2004-05-07 10:54
2004.05.30
Перенос базы IB6.x ->> FB1.5 - есть ли где грабли?


14-1084109673
Nick Denry
2004-05-09 17:34
2004.05.30
Куда дели ссылку на Мастера Улыбаются?


4-1080885334
Sapsi
2004-04-02 09:55
2004.05.30
Поиск edit и button в чужом окне


7-1082445218
Ozone
2004-04-20 11:13
2004.05.30
Com - порт


3-1083572933
ss300
2004-05-03 12:28
2004.05.30
Странное поведение TClientDataset




   Наверх