На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила ЧаВо (FAQ) разделов Паскаля
В этом разделе разрешено создавать только темы, в которых описано РЕШЕНИЕ какой-либо общей проблемы, или описание какого-либо аспекта языка Паскаль.
Обсуждение уже созданных тем разрешено, но только конструктивное, например указание на ошибку или уточнение имеющегося текста.

Также читать Требования к оформлению статей
Модераторы: volvo877, Romtek
  
> Как вывести Real в понятном виде? , чтобы была привычная нам форма записи
    Есть некая программа, в которой для вычисления используются дробные числа (предположим, 1.5). По окончанию вычисления ответ выводится вот таким образом: 3.40000000000000E+0003+ :blink:
    Вопрос: как это число переобразовать в нормальный человеческий вид, приемлемый для понимания простыми юзверями программы?
    ЗЫ. Модераторам: просьба сильно не пинать, я второй день в жизни изучаю Pascal.
      Взято из VP, так что не знаю может под BP и не работает…
      Цитата

      Str procedure (System unit)
      ----------------------------------------------------

      procedure Str(X [: Width [: Decimals ]]; var S:String);

      Converts the numeric value X to the same string representation as would be
      output by a call to the Write procedure.

      See also Val, IntToStr, Format.

      Examples:
      Str( 10, s ) -> s = '10'
      Str( 10:3, s ) -> s = ' 10'
      Str( 10:6:2, s ) -> s = ' 10.00'
      Сообщение отредактировано: ZenIA -
        Можно писать и так:
        ExpandedWrap disabled
          write(a:6:3);
        Без перевода в строку.

        Добавлено в :
        Первая цифра будет обозначать минимальное количество ячеек которое будет занимать число. Если это число состоит из меньшего количества символов, то оно выравнивается по правому краю.
        Вторая цифра обозначает количество знаков после запятой. Если там задать к примеру 5, а у числа реально только 3 знака после запятой, то число дополнится нулями до 5 знаков после запятой. Если же у числа реально больше знаков после запятой, то на экран выведется только пять.
        Вот например код: write(1.234:9:1) сместит курсор направо на 9 символов, а число будет в этих 9 символах справа, и будет только один знак после запятой:
        ExpandedWrap disabled
          |      1.2|  - результат на экране
          |123456789|  - номера символов

        К сожалению в BP нельзя заставить выравнивать число по левой стороне, а это иногда бывает ой как удобно. Например для табличного вывода данных.
        Зато в ТМТ паскале можно выравнивать и по левой стороне, если задавать отрицательную длину.
        Такой код: write(1.234:-9:5) в ТМТ паскале даст следующий результат:
        ExpandedWrap disabled
          |1.23400  |  - результат на экране
          |123456789|  - номера символов
        Если число длиннее, чем указанное первой цифрой, то число будет напечатано полностью, не считаясь с значением первой цифры.
        Например такой код: write(123.4567:3:2) даст такой результат:
        ExpandedWrap disabled
          |123.45|  - результат на экране
          |123456|  - номера символов
        , что явно длиннее чем 3 символа.

        Добавлено в :
        В форматировании таким образом можно использовать не только числа, но и строки, или символы. Можно использовать и целые числа. Тогда второе число, указывающее количество знаков после запятой использовать уже нельзя, и попытка его использовать вызовет ошибку.
        Например вот такой финт:
        write(' ':40); даст 40 подряд идущих пробелов.
        Это иногда бывает удобно для рисования окон. Например:
        write('|','|':39); даст левый и правый бордюры окна шириной в 40 символов, заполненного пробелами.

        Так-же в таком форматировании не запрещается использовать переменные и даже целые выражения.
        Допустим если у нас изначально неизвестен размер окна по горизонтали, но он находятся в переменной xsize, то можно написать так: write('|','|':(xsize-1));

        К сожалению таким образом нельзя заполнить каким либо другим символом, отличным от пробела.
        Поэтому конечно нельзя также сделать и верхний/нижний бордюры окна.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0187 ]   [ 16 queries used ]   [ Generated: 30.05.24, 23:12 GMT ]