Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получаеться задать формат дробному числу, FormatFloat не помогает 
:(
    Опции темы
Rodeon
Дата 5.4.2012, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Имееться текстовый файл следующего содержания:
 1    547.50    550.10    2.60   4.371   0.000
 2    552.30    555.30    3.00   5.535   0.000
 3    556.50    563.30    6.80   2.916   0.000
 4    565.30    569.90    4.60   2.805   0.000
 5    573.30    575.70    2.40   5.117   0.000
 6    576.50    582.50    6.00   7.279   0.000
 7    583.70    587.50    3.80   3.979   0.000
 8    588.30    593.10    4.80   5.371   0.000
 9    594.30    597.30    3.00   6.099   0.000
10    599.70    602.50    2.80   4.288   0.000
11    606.10    610.30    4.20   6.245   0.000
12    613.30    623.30   10.00   6.390   0.000
13    626.10    636.90   10.80   7.006   0.000
14    638.70    641.30    2.60   6.465   0.000
15    646.70    648.90    2.20   3.647   0.000
16    650.50    661.30   10.80   3.372   0.000
17    663.70    673.10    9.40   4.189   0.000
18    676.70    683.90    7.20   3.169   0.000

Считываю его так:
Код

procedure TForm1.sBitBtn1Click(Sender: TObject);
var
  tempstring:string;
  f : TStringList;
  Nums,i:integer;
  n1: Integer;
  n2, n3, n4, n5, n6 : Single;
begin
  If sOpenDialog1.Execute then
  Begin
    f := TStringList.Create();
    f.LoadFromFile(sOpenDialog1.FileName);
    Nums:=F.Count;
    AssignFile(IntervalFile, sOpenDialog1.FileName);
    Reset(IntervalFile);
    For i:=1 to Nums do
    begin
      ReadLn(IntervalFile, n1, n2, n3,n4,n5,n6);
      FormatFloat('0,00',n2);
      memo1.Lines.Add(floattostr(n2)+' '+floattostr(N3));
    End;
  End;
end;

Так как важны только 2-е и 3-е значения вывожу их в мемо, но откуда такие значения, такая точность?
547,5 550,099975585938
552,299987792969 555,299987792969
556,5 563,299987792969
565,299987792969 569,900024414063
573,299987792969 575,700012207031
576,5 582,5
583,700012207031 587,5
588,299987792969 593,099975585938
594,299987792969 597,299987792969
599,700012207031 602,5
606,099975585938 610,299987792969
613,299987792969 623,299987792969
626,099975585938 636,900024414063
638,700012207031 641,299987792969
646,700012207031 648,900024414063
650,5 661,299987792969
663,700012207031 673,099975585938
676,700012207031 683,900024414063
688,099975585938 691,5
766,900024414063 771,900024414063
Колличество знаков после запятой откуда?

Меняю тип переменных   n2, n3, n4, n5, n6 на Extended; 
Становиться лучше, но теперь не хватает колличества знаков, должно быть 2 знака после запятой.
547,5 550,1
552,3 555,3
556,5 563,3
565,3 569,9
573,3 575,7
576,5 582,5
583,7 587,5
588,3 593,1
594,3 597,3
599,7 602,5
606,1 610,3
613,3 623,3
626,1 636,9
638,7 641,3

И в первом и во втором случае FormatFloat не помогает.



PM MAIL   Вверх
kami
Дата 5.4.2012, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



неочевидные особенности.
Читать главу "Примеры «неправильного» поведения вещественных типов"
PM MAIL WWW   Вверх
Rodeon
Дата 5.4.2012, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Спасибо, почитал!
Оставил тип Extended пока!
Осталось 3 вопроса:
1. Если у меня при типе Extended числа отображаються с 1 знаком после запятой, будет ли так-же на другой машине?
2. После загрузки этих данных, я потом произвожу поиск на соответствие в другом файле, т.е. береться первое число и ишеться первое вхождение в другом файле данных, не будет ли проблемм с этим в будущем, а то если судить по вот этому примеру:
Код

var R:Single;
 begin
  R:=0.1;
  if R=0.1 then
   Label1.Caption:='Равно'

  else
   Label1.Caption:='Не равно'
 end;

у меня как раз не получиться найти ничего.
3. Как с этим бороться, мне надо что бы и отображалось и компьютер правильно сравнивал значения, например загрузил от такое 573,30, но отображает его как 573,29998779296
в другом файле тоже есть значение 573.30, но я так понимаю он его не найдет?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.