Обычный (бесформатный) вывод данных обладает тем недостатком, что данные, выводимые одним оператором WriteLn и перечисленные в скобках этого оператора через запятую, изображаются на экране подряд, без промежутков. Например, после выполнения фрагмента
c:='Ф'; s:='хорошо'; i:=18; WriteLn(c,s,i)
мы увидим в строке экрана
Ф |
х |
о |
р |
о |
ш |
о |
1 |
8 |
|
|
|
|
|
|
Мы можем приказать Паскалю отводить под каждое данное столько позиций в строке, сколько нам нужно: WriteLn(c:3,s:8,i:4)
Вот что мы увидим в строке экрана:
|
|
Ф |
|
|
х |
о |
р |
о |
ш |
о |
|
|
1 |
8 |
|
|
|
|
|
|
|
|
|
|
|
|
Здесь под c отведено поле в три позиции (с 1 по 3), начиная с левого края экрана. Под s отведено поле в 8 позиций (с 4 по 11). Под i отведено поле в 4 позиции (с 12 по 15). Информацией заполняется правая часть поля, а левая часть может остаться пустой.
Еще один недостаток бесформатного вывода: данные типа Real всегда изображаются в неудобочитаемом экспоненциальном виде. Например, после выполнения фрагмента
r:=465.28073; WriteLn(r)
мы увидим на экране
|
4 |
. |
6 |
5 |
2 |
8 |
0 |
7 |
3 |
0 |
0 |
0 |
0 |
2 |
3 |
1 |
E |
+ |
0 |
0 |
0 |
2 |
|
|
|
|
|
что означает 4.65280730000231 * 102 или, что то же самое, 465.280730000231. Обратите внимание на откуда-то взявшиеся цифры 231. Их появление связано с неточностью представления вещественных чисел в компьютере.
Еще один пример: r:=0.000000308; WriteLn(r)
|
3 |
. |
0 |
8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
7 |
9 |
E |
- |
0 |
0 |
0 |
7 |
|
|
|
|
|
что означает 3.08000000000079 * 10-7 или, что то же самое, 0.000000308000000000079 .
Еще пример: r:= -0.000003; WriteLn(r)
- |
2 |
. |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
9 |
5 |
3 |
E |
- |
0 |
0 |
0 |
6 |
|
|
|
|
|
что означает -2.99999999999953 * 10-6 или, что то же самое, -0.00000299999999999953, а это практически равно -0.000003.
Как избавиться от экспоненциального вида? Формат :9:3 прикажет Паскалю изобразить число типа Real в привычном для нас виде, отведя под него 9 позиций в строке, из них 3 позиции под дробную часть числа. Пример:
r:=465.28073; WriteLn(r:9:3)
|
|
4 |
6 |
5 |
. |
2 |
8 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обратите внимание, что дробная часть округлена, так как она целиком не умещается в отведенный формат.
Еще пример: r:=465.28073; WriteLn(r:10:0)
|
|
|
|
|
|
|
4 |
6 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Еще пример: r:= -465.28073; WriteLn(r:10)
- |
4 |
. |
7 |
E |
+ |
0 |
0 |
0 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Это у нас получился вывод в "укороченном" экспоненциальном формате.
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.