imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 07.10.2004, 20:26     # 1
Lord Skill
Member
 
Аватар для Lord Skill
 
Регистрация: 29.10.2002
Адрес: Estonia
Сообщения: 270

Lord Skill Путь к славе только начался
Thumbs down Free Pascal: Var Type : extended

znaet li kto-nibud' kak chislo tipa extended (1.5424245E+90) vyvesti v fajl v standartnom vide (154242450000000000000000000000000000000....)
__________________
Lord Skill вне форума  
Старый 07.10.2004, 21:18     # 2
spleenJack
Member
 
Аватар для spleenJack
 
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201

spleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царстве
Lord Skill
Код:
var
  h: extended;
  f: text;
begin
  h := 1000000000 * 5.3;
  h := 1000000000 * h;
  assign(f, 'qwe.txt');
  rewrite(f);
  writeln(f,h:0:0);
  close(f);
  readln;
end.
вообще просто при выводе в файл пишешь имя переменной и :0:0 - это если число положительное
если отрицательное - то вместо второго нуля поставь число, которое тебе нужно (например, 5) - и после запятой будет пять знаков
spleenJack вне форума  
Старый 08.10.2004, 17:25     # 3
Lord Skill
Member
 
Аватар для Lord Skill
 
Регистрация: 29.10.2002
Адрес: Estonia
Сообщения: 270

Lord Skill Путь к славе только начался
ja uzhe tak proboval =( - nuli pomogajut f:0:0 tol'ko vo writeln tol'ko do 17 razrjadov - a kak byt' kogda ih 90?
__________________
Lord Skill вне форума  
Старый 08.10.2004, 20:31     # 4
spleenJack
Member
 
Аватар для spleenJack
 
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201

spleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царстве
придумал вот такой изврат
Код:
function ExpotentialToStr(s: string): string;
var
  PosE, PosDot: integer; {позиции буквы E и точки}
  CountZeroStr: string; {кол-во нулей для добавления (строка)}
  CountZero: integer; {кол-во нулей для добавления (число)}
  MinusCountZero: integer; {число нулей, которое надо убрать}
  ZeroStr: string; {строка с нулями}
  ErrorCode: integer; {код ошибки (для Val)}
begin
  {удаляем пробел}
  if s[1] = ' ' then
    Delete(s, 1, 1);
  PosE := Pos('E', s); {позиция буквы E}
  if PosE > 0 then begin {если она есть}
    PosDot := Pos('.', s); {позиция точки}
    CountZeroStr := Copy(s, PosE + 2, 4); {степень у E - это и есть кол-во нулей}
    Val(CountZeroStr, CountZero, ErrorCode);
    if s[PosE + 1] = '+' then begin {если степень положительная}
      MinusCountZero := PosE - PosDot - 1; {кол-во знаков от точки до E - их кол-во надо убрать из кол-ва нулей, которое мы получили выше}
      CountZero := CountZero - MinusCountZero; {конечное число нулей для добавления}
      Delete(s, PosE, 6); {удаляем E}
      Delete(s, PosDot, 1); {удаляем точку}
      FillChar(ZeroStr, CountZero + 1, '0'); {строка с нулями}
      ZeroStr[0] := Chr(CountZero);
      s := s + ZeroStr; {объединяем число с нулями}
    end
    else begin {если степень отрицательная}
      MinusCountZero := PosDot - 1; {кол-во знаков до точки}
      CountZero := CountZero - MinusCountZero; {конечное число нулей для добавления}
      Delete(s, PosE, 6); {удаляем E}
      while s[Length(s)] = '0' do
        Delete(s, Length(s), 1); {удаляем все нули справа от числа}
      Delete(s, PosDot, 1); {удаляем точку}
      FillChar(ZeroStr, CountZero + 1, '0'); {строка с нулями}
      ZeroStr[0] := Chr(CountZero);
      s := '0.' + ZeroStr + s; {объединяем число и нули}
    end;
  end;
  ExponentialToStr := s;
end;
ничего проще не придумывается )

вроде работает правильно.. НО!! только для чисел у которых степень больше 14 - если меньше она сглюканет.. но я это еще не проверил - если хочешь попробуй - но думаю не сработает
если для малых чисел нужно - могу доработать
spleenJack вне форума  
Старый 09.10.2004, 14:51     # 5
Lord Skill
Member
 
Аватар для Lord Skill
 
Регистрация: 29.10.2002
Адрес: Estonia
Сообщения: 270

Lord Skill Путь к славе только начался
spasibo ograomnoe =)
__________________
Lord Skill вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:10.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.