Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > формат числа заданный переменной


Автор: SerGoFun 5.10.2005, 18:43
Кто соображает помогите! smile Не могу въехать! smile
Формат числа указывает сколько символов будет отображаться на экране и сколько ячеек памяти будет выделено под какое-либо выражение(результат).
Пример writeln('a=',a[b]:3:2[/b]) - - - это значит, что под целую часть будет выделено 2 ячейки памяти одна ячейка под точку и две ячейки под дробную часть т.е. в результате мы получим вместо длинного хвоста округленный вариант.
Как можно задать формат числа переменной и вклинить в задачу если например:
дана точность до 0,001 то и в результате ответ округлился до тысячных;
дана точность до 0,01 то и в результате ответ округлился до сотых, и т.д. заранее благодарен за помощь!!! smile

Автор: Mal Hack 5.10.2005, 19:59
Первое число - всего знаков на число, второе - на дробную часть.
На днях писал:
Код

 readln( a );

 cnt := Length( FloatToStr( Frac( Abs( a ) ) ) ) - 2;

 ...

 writeln( 'V = ' , format('%*.*f', [8, cnt, v] ) );
// или
 writeln( 'V = ' , v : 8 : cnt ) );


Автор: Romtek 7.10.2005, 00:24
Цитата(SerGoFun @ 5.10.2005, 18:43)
Как можно задать формат числа переменной и вклинить в задачу если например:
дана точность до 0,001 то и в результате ответ округлился до тысячных;
дана точность до 0,01 то и в результате ответ округлился до сотых, и т.д. заранее благодарен за помощь!!!

Код

writeln (5.2134 : 10 : 3); {до тысячных, в конце 3}
writeln (5.2134 : 10 : 2); {до тысячных, в конце 2}

10 означает, что надо выравнивать на 10 знаков справа.
Если написать так:
Код

writeln (5.2134 : 10 : 3); writeln (5.2134 : 10 : 3);
то выведутся числа 5.123 на расстоянии 10 знаков (позиций курсора) от одного до другого.
Поэкспериментируй с этим, очень удобная вещь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)