
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.175] |
![]() |
|
![]() |
|
|
Есть некая программа, в которой для вычисления используются дробные числа (предположим, 1.5). По окончанию вычисления ответ выводится вот таким образом: 3.40000000000000E+0003+
![]() Вопрос: как это число переобразовать в нормальный человеческий вид, приемлемый для понимания простыми юзверями программы? ЗЫ. Модераторам: просьба сильно не пинать, я второй день в жизни изучаю Pascal. |
Сообщ.
#2
,
|
|
|
Взято из 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' |
Сообщ.
#3
,
|
|
|
Можно писать и так:
![]() ![]() write(a:6:3); Добавлено в : Первая цифра будет обозначать минимальное количество ячеек которое будет занимать число. Если это число состоит из меньшего количества символов, то оно выравнивается по правому краю. Вторая цифра обозначает количество знаков после запятой. Если там задать к примеру 5, а у числа реально только 3 знака после запятой, то число дополнится нулями до 5 знаков после запятой. Если же у числа реально больше знаков после запятой, то на экран выведется только пять. Вот например код: write(1.234:9:1) сместит курсор направо на 9 символов, а число будет в этих 9 символах справа, и будет только один знак после запятой: ![]() ![]() | 1.2| - результат на экране |123456789| - номера символов К сожалению в BP нельзя заставить выравнивать число по левой стороне, а это иногда бывает ой как удобно. Например для табличного вывода данных. Зато в ТМТ паскале можно выравнивать и по левой стороне, если задавать отрицательную длину. Такой код: write(1.234:-9:5) в ТМТ паскале даст следующий результат: ![]() ![]() |1.23400 | - результат на экране |123456789| - номера символов Например такой код: write(123.4567:3:2) даст такой результат: ![]() ![]() |123.45| - результат на экране |123456| - номера символов Добавлено в : В форматировании таким образом можно использовать не только числа, но и строки, или символы. Можно использовать и целые числа. Тогда второе число, указывающее количество знаков после запятой использовать уже нельзя, и попытка его использовать вызовет ошибку. Например вот такой финт: write(' ':40); даст 40 подряд идущих пробелов. Это иногда бывает удобно для рисования окон. Например: write('|','|':39); даст левый и правый бордюры окна шириной в 40 символов, заполненного пробелами. Так-же в таком форматировании не запрещается использовать переменные и даже целые выражения. Допустим если у нас изначально неизвестен размер окна по горизонтали, но он находятся в переменной xsize, то можно написать так: write('|','|':(xsize-1)); К сожалению таким образом нельзя заполнить каким либо другим символом, отличным от пробела. Поэтому конечно нельзя также сделать и верхний/нижний бордюры окна. |