PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 79


Однако во многих ситуациях можно просто воспользоваться функцией sprintf. Формат f позволяет указать количество разрядов, до которого округляется аргу­мент. Perl округляет последний разряд вверх, если следующая цифра равна 5 и более, и вниз в противном случае.


72   Глава 2 • Числа

$а = 0.255

$b = spnntf("%.2f", $a);

print "Unrounded: $a\nRounded: %.2f\n", $a,

Unrounded:  0.255 Rounded: 0.26 Unrounded: 0.255 Rounded: 0.26

Существуют три функции, предназначенные для округления чисел с плаваю­щей запятой до целых: int, ceil и floor. Встроенная функция Perl int возвращает целую часть числа с плавающей запятой (при вызове без аргумента она использу­ет $_). Функции модуля POSIX floor и ceil округляют аргументы вверх и вниз, соответственно, до ближайшего целого.

use POSIX;

print   "number\tint\floor\tceil\n",

@a = { 3.3 ,   3.5 ,   3.7 ,   -3.3}; foreach (@a)  {

printf(  "% ,1f\t% ,1f\t% ,1f\t% .1f\n", $_,   int($_),   floor($_),  ceil($_)  );

number

int

floor

ceil

3.3

3.0

3.0

4.0

3.5

3.0

3.0

4.0

3.7

3.0

3.0

4.0

-3.3

-3.0

-4.0

-3.0

> Смотри также----

Описание функций sprintf и int в perlfunc(l); описание функций floor и ceil в документации по стандартному модулю POSIX. Методика использо­вания sprintf для округления представлена в рецепте 2.2.

2.4. Преобразования между двоичной и десятичной системами счисления

Проблема

Имеется десятичное число, которое необходимо вывести в двоичном представ­лении, или наоборот, двоичная последовательность, которую требуется преоб­разовать в десятичное число. Такие задачи часто возникают при отображении не-текстовых данных — например, полученных в процессе взаимодействия с некото­рыми системными функциями и программами.


2.4. Преобразования между двоичной и десятичной системами счисления    73

Решение

Чтобы преобразовать целое число Perl в строку, состоящую из единиц и нулей, сначала упакуйте его в сетевой формат "N" (с начальным старшим байтом), а за­тем снова распакуйте по одному биту (формат "В32 ").




Начало  Назад  Вперед