Linux 内核最低构建要求指定计算器bc
需要构建内核 v4.10,该工具的最低版本为1.06.95
.
bc
在这种情况下有什么用,为什么不直接使用 C 语言来代替bc
这些操作?
看起来 bc 不支持浮点运算,当我这样做时,echo 1/8 | bc
它会得到零。
我查过bc (1)
,但它甚至没有提到float
,所以我想知道它是否受支持?
有时我需要将一个数除以另一个数。如果我可以为此定义一个 bash 函数,那就太好了。到目前为止,我被迫使用诸如
echo 'scale=25;65320/670' | bc
Run Code Online (Sandbox Code Playgroud)
但如果我能定义一个看起来像的 .bashrc 函数就太好了
divide () {
bc -d $1 / $2
}
Run Code Online (Sandbox Code Playgroud) 我正在分别6^6^6
使用python
和评估表达式bc
。
python文件的内容是print 6**6**6
. 当我执行时time python test.py
,我得到的输出为
real 0m0.067s
user 0m0.050s
sys 0m0.011s
Run Code Online (Sandbox Code Playgroud)
然后,我运行了time echo 6^6^6 | bc
给我以下输出的命令
real 0m0.205s
user 0m0.197s
sys 0m0.005s
Run Code Online (Sandbox Code Playgroud)
从这些结果可以清楚地看出,python 和 bc 所用的 sys 时间分别为 11 毫秒和 5 毫秒。在bc命令跑赢蟒蛇在SYS时的水平,但是当它涉及到用户和实时蟒蛇比BC快近4倍。那里可能有什么。我没有对这些过程给予任何优先考虑。我试图了解这种情况。
我正在尝试hex
直接使用进行计算bc
,我已经指定了比例。
echo 'scale=16;c06b1000-c06a5e78' | bc
Run Code Online (Sandbox Code Playgroud)
但我仍然得到一个零。可能有什么问题?
我经常使用bc
实用程序将十六进制转换为十进制,反之亦然。但是,如何ibase
以及obase
应该如何配置总是需要反复试验。例如在这里我想将十六进制值 C0 转换为十进制:
$ echo "ibase=F;obase=A;C0" | bc
180
$ echo "ibase=F;obase=10;C0" | bc
C0
$ echo "ibase=16;obase=A;C0" | bc
192
Run Code Online (Sandbox Code Playgroud)
这里的逻辑是什么?obase
(A
在我的第三个例子中)需要与被转换的值(C0
在我的例子中)和ibase
(16
在我的第三个例子中)必须在我要转换到的基数中?
我一直在使用bc
二进制到十六进制、八进制到十进制等之间的数字转换。
在以下示例中,我试图将基数为 16(十六进制)的数字转换为二进制、八进制和十进制。
前 2 次尝试我没有任何问题。
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将基数 16(十六进制)数字转换为基数 10(十进制)时,我得到了错误的答案。答案应该是255
$ echo 'ibase=16; obase=10; FF' | bc
FF
Run Code Online (Sandbox Code Playgroud) 我有一个简单的 bash 函数将两个数字相除:
echo "750/12.5" | bc
Run Code Online (Sandbox Code Playgroud)
我想采取输出bc
和追加/24
和管道表示结果的另一个实例bc
。
就像是:
echo "750/12.5" | bc | echo $1 + "/24" | bc
Run Code Online (Sandbox Code Playgroud)
$1
管道结果在哪里。
PS我意识到我可以做echo "750/12.5/24" | bc
我的问题更多的是关于将文本附加到管道结果。
我想用 bash 中的两个有效数字打印浮点数(可能使用常用工具,如 awk、bc、dc、perl 等)。
例子:
在这两种情况下,有效数字都是 7 和 6。我已经阅读了一些类似问题的答案,例如:
但答案的重点是限制小数位数(例如bc
command withscale=2
或printf
command with %.2f
)而不是有效数字。
有没有一种简单的方法可以用正好 2 个有效数字来格式化数字,还是我必须编写自己的函数?
bc ×10
calculator ×2
command-line ×2
arithmetic ×1
awk ×1
bash ×1
bashrc ×1
dc ×1
function ×1
linux-kernel ×1
output ×1
performance ×1
pipe ×1
python ×1
shell ×1