算术运算符 #
一、基本算术运算符 #
1.1 加法 + #
perl
my $a = 10;
my $b = 3;
my $sum = $a + $b;
print $sum;
1.2 减法 - #
perl
my $a = 10;
my $b = 3;
my $diff = $a - $b;
print $diff;
1.3 乘法 * #
perl
my $a = 10;
my $b = 3;
my $product = $a * $b;
print $product;
1.4 除法 / #
perl
my $a = 10;
my $b = 3;
my $quotient = $a / $b;
print $quotient;
整数除法:
perl
my $int_div = int(10 / 3);
print $int_div;
1.5 取余 % #
perl
my $a = 10;
my $b = 3;
my $remainder = $a % $b;
print $remainder;
1.6 幂运算 ** #
perl
my $a = 2;
my $b = 10;
my $power = $a ** $b;
print $power;
二、运算符优先级 #
算术运算符优先级(从高到低):
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | ** | 幂运算 |
| 2 | * / % | 乘、除、取余 |
| 3 | + - | 加、减 |
示例:
perl
my $result1 = 2 + 3 * 4;
my $result2 = (2 + 3) * 4;
my $result3 = 2 ** 3 ** 2;
my $result4 = (2 ** 3) ** 2;
三、自增自减 #
3.1 自增 ++ #
perl
my $a = 5;
$a++;
print $a;
my $b = 5;
my $c = $b++;
print "c = $c, b = $b\n";
my $d = 5;
my $e = ++$d;
print "e = $e, d = $d\n";
3.2 自减 – #
perl
my $a = 5;
$a--;
print $a;
my $b = 5;
my $c = $b--;
print "c = $c, b = $b\n";
my $d = 5;
my $e = --$d;
print "e = $e, d = $d\n";
3.3 前置与后置的区别 #
| 操作 | 说明 |
|---|---|
| $a++ | 先返回值,再自增 |
| ++$a | 先自增,再返回值 |
| $a– | 先返回值,再自减 |
| –$a | 先自减,再返回值 |
四、数学函数 #
4.1 基本函数 #
perl
print abs(-10);
print int(3.7);
print int(-3.7);
print sqrt(16);
4.2 三角函数 #
perl
use POSIX;
print sin(0);
print cos(0);
print atan2(1, 1);
4.3 对数函数 #
perl
print log(10);
print exp(1);
4.4 随机数 #
perl
print rand();
print rand(100);
print int(rand(100));
srand(42);
五、进制转换 #
5.1 不同进制表示 #
perl
my $decimal = 42;
my $hex = 0x2A;
my $octal = 052;
my $binary = 0b101010;
print $decimal;
print $hex;
print $octal;
print $binary;
5.2 进制转换函数 #
perl
my $num = 42;
my $hex_str = sprintf("%x", $num);
my $oct_str = sprintf("%o", $num);
my $bin_str = sprintf("%b", $num);
print "Hex: $hex_str\n";
print "Octal: $oct_str\n";
print "Binary: $bin_str\n";
字符串转数字:
perl
my $hex = hex("2A");
my $oct = oct("52");
my $bin = oct("0b101010");
print $hex;
print $oct;
print $bin;
六、实用示例 #
6.1 四舍五入 #
perl
sub round {
my $num = shift;
return int($num + 0.5);
}
print round(3.4);
print round(3.5);
print round(3.6);
使用 POSIX 模块:
perl
use POSIX qw(round);
print round(3.4);
print round(3.5);
6.2 保留小数位 #
perl
my $num = 3.14159;
my $formatted = sprintf("%.2f", $num);
print $formatted;
6.3 范围检查 #
perl
my $value = 75;
my $min = 0;
my $max = 100;
my $clamped = $value < $min ? $min : ($value > $max ? $max : $value);
print $clamped;
七、实践练习 #
练习1:简单计算器 #
perl
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
my ($a, $op, $b) = (10, '+', 5);
my $result;
if ($op eq '+') { $result = $a + $b; }
elsif ($op eq '-') { $result = $a - $b; }
elsif ($op eq '*') { $result = $a * $b; }
elsif ($op eq '/') { $result = $a / $b; }
elsif ($op eq '%') { $result = $a % $b; }
elsif ($op eq '**') { $result = $a ** $b; }
say "$a $op $b = $result";
练习2:数字统计 #
perl
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
use List::Util qw(sum max min);
my @numbers = (23, 45, 12, 67, 34, 89, 56);
my $total = sum @numbers;
my $count = scalar @numbers;
my $avg = $total / $count;
say "Numbers: @numbers";
say "Sum: $total";
say "Count: $count";
say "Average: " . sprintf("%.2f", $avg);
say "Max: " . max(@numbers);
say "Min: " . min(@numbers);
练习3:进制转换器 #
perl
#!/usr/bin/perl
use strict;
use warnings;
use v5.10;
my $num = 42;
printf "Decimal: %d\n", $num;
printf "Hex: 0x%X\n", $num;
printf "Octal: 0%o\n", $num;
printf "Binary: 0b%b\n", $num;
八、总结 #
本章学习了:
- 基本算术运算符
- 运算符优先级
- 自增自减运算符
- 数学函数
- 进制转换
下一章将学习字符串运算符。
最后更新:2026-03-27