Помощь - Поиск - Пользователи - Календарь
Полная версия: числа с фиксированной и плавающей точкой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
18192123
В текстовом файле записаны вещественные числа в форме с фиксированной точкой. Преобразовать файл, представив каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе.

Первый раз сталкиваюсь с таким, что вообще нужно делать для того, чтобы представить каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе?

volvo
Прочитай пока здесь: Формы представления чисел в ЭВМ
18192123
Я так и не смогла разобраться!

Объясните пожалуйста!
Sundery
алгоритм такой - считываешь строку из файла, пробегаешь символы до точки, записываешь в один string, и после точки 2 символа в другой string. затем с помощью val переводишь оба string'а в integer. второй делишь на 100 и прибавляешь к первому.. надеюсь понятно smile.gif может не самый лучший способ, но это первое что в голову пришло
мисс_граффити
ну и ради чего такие извращения?
val и с действительными числами прекрасно работает.

не совсем поняла задание:
Цитата
представив каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе.

в мантиссе нет точек! надо сохранить две цифры, которые были после точки в форме с фиксированной точкой? или сделать так, чтобы в мантиссе было 2 значащих цифры? или в мантиссу записать только те две цифры, которые были после точки (отбросив целую часть)?
В общем, приведи пример: что было->что стало
18192123
Цитата(мисс_граффити @ 11.01.2007 0:49) *

В общем, приведи пример: что было->что стало

Боюсь, что не могу ответить на твой вопрос, поскольку задание вообще не поняла ...
Archon
Я это так представляю:
00544.115650 -> 5.44E2
12024.120000 -> 1.20E4
00000.100000 -> 1.00E-1
00000.000015 -> 1.50E-5
18192123
Цитата(Archon @ 12.01.2007 0:32) *

Я это так представляю:
00544.115650 -> 5.44E2
12024.120000 -> 1.20E4
00000.100000 -> 1.00E-1
00000.000015 -> 1.50E-5

а как это можно осуществить?
Malice
Цитата(18192123 @ 13.01.2007 21:49) *

а как это можно осуществить?


Вон, что вышло: wacko.gif
Function format (x:string):string; 
var e:integer;
z,s:string;
begin
if x[1]='-' then begin delete (x,1,1); z:='-'; end else z:='';
while x[1]='0' do delete (x,1,1);
e:=pos('.',x)-1;
if e=0 then
while x[2]='0' do begin dec (e); delete (x,2,1); end;
delete (x,e+1,1);
dec (e); insert ('.',x,2);
delete (x,5,255);
while length(x)<4 do x:=x+'0';
str (e,s);
format:=z+x+'E'+s;
end;


Проверка:
writeln (format('00544.115650'));
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.