| imho.ws |
![]() |
|
|
|
# 2 |
|
Member
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201
![]() ![]() ![]() ![]() ![]() ![]() |
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. если отрицательное - то вместо второго нуля поставь число, которое тебе нужно (например, 5) - и после запятой будет пять знаков |
|
|
|
|
# 4 |
|
Member
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201
![]() ![]() ![]() ![]() ![]() ![]() |
придумал вот такой изврат
![]() Код:
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 - если меньше она сглюканет.. но я это еще не проверил - если хочешь попробуй - но думаю не сработает если для малых чисел нужно - могу доработать
|
|
|