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


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


$b_real = 2;   $b_imaginary = -2;                       # 2 - 2i;

$c_real = ($a_real * $b_real ) - ( $a_imaginary ¦ $b_imaginary );

$c_imaginary = ($a_real • $b_imagmary ) - ( $b_real • $a_imaginary );


2.16 Преобразования восьмеричных и шестнадцатеричных чисел   87

print "с = ${c_real}+${c_imaginary}i\n";

с = 16+4i

То же с применением модуля Math::Complex:

use Math:iComplex;

$a = Math:;Complex->new(3, 5);

$b = Math::Complex->new(2,-2);

$c = $a * $t>;

print "c = $c\n";

с =  16+41

Версия 5.004 позволяет создавать комплексные числа с помощью конструкции cplx или экспортированной константы i:

use Math::Complex;

$c = cplx(3,5) * cplx(2,-2);        # Лучше воспринимается

$d = 3 + 4*i;               #3+4i

printf "sqrt($d) = %s\n", sqrt($d);

sqrt(3+4i) = 2+i

В исходном варианте модуля Math::Complex, распространяемом с версией 5.003, не перегружаются многие функции и операторы версии 5.004. Кроме того, Math::Complex используется модулем Math::Trig (появившимся в версии 5.004), поскольку некоторые функции могут выходить за пределы вещественной оси в комплексную плоскость — например, арксинус 2.

 Смотри также

Документация по стандартному модулю Math::Complex.

2.16. Преобразования восьмеричных и шестнадцатеричных чисел

Проблема

Требуется преобразовать строку с восьмеричным или шестнадцатеричным представ­лением (например, "0x55" или "0755") в правильное число.

Perl воспринимает лишь те восьмеричные и шестнадцатеричные числа, кото­рые встречаются в программе в виде литералов. Если числа были получены при чтении из файла или переданы в качестве аргументов командной строки, автома­тическое преобразование не выполняется.

Решение

Воспользуйтесь функциями Perl oct и hex:

$number = hex($hexadecimal);      # Шестнадцатеричное число
$number = oct($octal);    # Восьмеричное число


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

Комментарий

Функция oct преобразует восьмеричные числа как с начальными нулями, так и без них ( 0350" и "350"). Более того, она даже преобразует шестнадцатеричные чис­ла, если у них имеется префикс "Ох". Функция hex преобразует только шестнадца­теричные числа с префиксом "Ох" или без него — например, "0x255", "ЗА", "ff" или "deadbeef" (допускаются символы верхнего и нижнего регистров).




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