我最近发现了' bc'在bash中,我一直在尝试使用它打印出用户输入的平方根。我在下面写的程序运行成功,但它只打印出' 0' 0而不是用户输入的平方根。
这是我写的代码:
(function() {
function matcher(term, text) {
term = term.toUpperCase();
text = text.toUpperCase().replace(/\./g, '').replace(/\s+/g, '');
if (text.indexOf(term) > -1 ) {
return true;
}
return false;
}
$(".select2").select2({
matcher: matcher
});
})();
我的代码有什么问题?我错过了什么?
答案 0 :(得分:3)
您的bc
命令和命令替换的使用是正确的,问题是您在未设置时提供了echo $a
。做:
a=$(bc <<< "scale=0; sqrt($VAR)")
echo "$a"
同样在扩展变量时,您应该使用通常的变量扩展表示法$var
或${var}
。我还从()
删除了一对冗余sqrt()
。
答案 1 :(得分:1)
也可以使用awk
。例如,以下示例显示了98的平方根的30个小数:
awk "BEGIN {printf \"%.30f\n\", sqrt(98)}"
上面的命令将输出9.899494936611665352188538236078
,然后您可以将其存储到a
变量中。
答案 2 :(得分:0)
假设您在变量var
中有一个数字,并且您想要该变量的平方根。你也可以使用awk:
a=$(awk -v x=$var 'BEGIN{print sqrt(x)}')
或
a=$(echo "$var" | awk '{print sqrt($1)}')
答案 3 :(得分:0)
如果您安装了qalc
程序(apt-get install qalc
),则与使用bc
相比,您可以更轻松地进行平方根和其他计算。
平方根可以这样完成:
qalc "sqrt(36)"
手册页不是很有帮助(至少对于我安装的版本而言),但是您可以在此处获得更多信息: