在Bash中使用bc计算幂的幂:表达式求解问题
解决zsh中使用bc计算大指数表达式的问题
首先,你碰到的no matches found报错,是因为zsh会把*、^这类字符当成文件名通配符解析,而非数学运算符。要让bc正确识别这些符号,得把表达式用引号包裹,或者转义特殊字符。
处理你最初的表达式:263371*2^^(8*(27-3))
先纠正一个小问题:bc里的幂运算符是^,^^是多余的,bc也不支持这个写法。解决通配符问题并修正表达式后,正确的命令是:
echo "263371 * 2^(8*(27-3))" | bc
如果一定要保留^^(虽然bc会报错),也得用引号包裹来避免zsh解析通配符,但实际计算还是得用^。
求解表达式238348 * 2^176
同样用引号包裹表达式,避免zsh干扰:
echo "238348 * 2^176" | bc
要是需要更简洁的科学计数法输出,可以加上-l参数启用bc的数学库,再设置精度:
echo "scale=5; 238348 * 2^176" | bc -l
bc默认支持超大整数的精确运算,要是你需要完整的整数结果,直接用不带-l的命令就行。
额外小提示
在zsh里,这些字符需要特别注意:
*:匹配任意文件名,必须转义(\*)或用引号包裹^:属于反向匹配通配符,同样需要转义或包裹():虽然不会触发通配符,但不加引号的话zsh会解析为子shell,建议也放在引号里
内容的提问来源于stack exchange,提问作者monkeyUser
相关产品推荐
相关产品推荐

