Linux bc 命令超详细教程:高精度计算 / 进制转换 / 数学函数一网打尽

Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd=7uz8
 

一、命令简介

bc(Basic Calculator)是一个支持任意精度计算的交互式计算器语言,作为 GNU 项目的一部分。它提供了强大的数学运算能力,特别适用于脚本中需要精确计算的场景,如浮点运算、高精度计算等,弥补了 Bash 内置算术运算的不足。

该命令默认支持交互式输入,也可通过管道、文件批量执行计算表达式。

二、语法格式

bash

运行

bc [选项] [文件...]

常用调用方式:

  • 交互模式:直接输入 bc 进入交互式计算环境。
  • 管道模式:通过管道传递表达式,例如 echo "表达式" | bc
  • 文件模式:执行包含 bc 代码的文件,例如 bc 计算文件.bc

三、常用选项及说明

表格

选项说明
-i强制进入交互式模式
-l加载标准数学库,启用高级数学函数(三角函数、对数等)
-w对 POSIX bc 的扩展语法给出警告信息
-q安静模式,不打印 GNU bc 的欢迎信息
-v显示 bc 版本信息
-h显示帮助信息
-s使用 POSIX 标准语法(禁用 GNU 扩展)
-e <表达式>执行表达式后退出(GNU 扩展)
-f <文件>执行文件中的代码(GNU 扩展)

四、示例用法

4.1 基本算术运算

bash

运行

# 加法
echo "5 + 3" | bc        # 输出: 8

# 减法
echo "10 - 4.5" | bc     # 输出: 5.5

# 乘法(支持浮点数)
echo "2.5 * 3" | bc      # 输出: 7.5

# 除法(默认整数除法)
echo "10 / 3" | bc       # 输出: 3

# 取模
echo "10 % 3" | bc       # 输出: 1

4.2 控制小数精度

通过 scale 变量设置保留小数位数。

bash

运行

# 设置小数位数为 2
echo "scale=2; 10 / 3" | bc    # 输出: 3.33

# 设置小数位数为 5
echo "scale=5; 1 / 7" | bc     # 输出: .14285

# 复杂表达式精度控制
echo "scale=4; (2.5 + 3.7) * 1.2 / 0.5" | bc   # 输出: 14.8800

4.3 进制转换

ibase 为输入进制,obase 为输出进制。

bash

运行

# 十进制转二进制
echo "obase=2; 192" | bc       # 输出: 11000000

# 二进制转十进制
echo "obase=10; ibase=2; 11000000" | bc   # 输出: 192

# 十进制转十六进制
echo "obase=16; 255" | bc      # 输出: FF

# 十六进制转十进制
echo "obase=10; ibase=16; FF" | bc    # 输出: 255

4.4 使用数学库(-l 选项)

-l 会加载数学库并默认 scale=20

bash

运行

# 平方根
echo "sqrt(100)" | bc -l        # 输出: 10.00000000000000000000

# 自然对数
echo "l(2.71828)" | bc -l       # 输出: .99999932734728277330

# 指数函数 e^1
echo "e(1)" | bc -l             # 输出: 2.71828182845904523536

# 正弦函数(弧度)
echo "s(3.14159/2)" | bc -l     # 输出: .99999999999999999999

# 余弦函数
echo "c(0)" | bc -l             # 输出: 1.00000000000000000000

# 反正切函数
echo "a(1)" | bc -l             # 输出: .78539816339744830961

# 计算 π
echo "4*a(1)" | bc -l           # 输出: 3.14159265358979323844

4.5 幂运算

bash

运行

# 平方
echo "10^2" | bc        # 输出: 100

# 立方
echo "2^3" | bc         # 输出: 8

# 大数幂运算
echo "2^100" | bc
# 输出: 1267650600228229401496703205376

4.6 变量和复杂计算

bash

运行

# 使用变量
echo "x=5; y=3; x*y + 2" | bc    # 输出: 17

# 多行计算
bc << EOF
scale=3
a=10.5
b=3.2
a/b
a%b
EOF
# 输出:
# 3.281
# .900

4.7 从文件执行

创建计算文件 calc.bc

plaintext

scale=4
pi=3.14159
radius=5
area=pi*radius^2
print "半径为 ", radius, " 的圆面积: ", area, "\n"

执行文件:

bash

运行

bc -q calc.bc
# 输出: 半径为 5 的圆面积: 78.5397

4.8 条件判断和循环(自定义函数)

bash

运行

# 计算阶乘
bc << EOF
define factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n-1);
}
factorial(10)
EOF
# 输出: 3628800

# 计算斐波那契数列
bc << EOF
define fib(n) {
  if (n <= 2) return 1;
  return fib(n-1) + fib(n-2);
}
fib(10)
EOF
# 输出: 55

五、注意事项

  1. 默认除法行为:默认情况下,bc 执行整数除法会截断小数部分,需使用 scale 变量控制小数精度。
  2. scale 生效范围scale 只影响除法、取模和幂运算,不影响加减乘。
  3. 进制设置顺序:进制转换时建议先设置 obase,再设置 ibase,避免因输入进制变化导致 obase 被错误解析。
  4. 性能问题:极高精度或超大数运算可能较慢,注意性能消耗。
  5. 退出交互模式:交互式环境中输入 quit 或按 Ctrl+D 即可退出。

Linux 学习资料 https://pan.baidu.com/s/1A6qqBk2ViE_Le2cQjSowkQ?pwd=7uz8
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿成学长_Cain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值