bash - 使用 bc -l 对 bash 中的浮点数进行加法/减法/乘法运算
问题描述
这么简单的任务我遇到了麻烦...
请在下面找到相关代码:
loewdin_fuk=$(echo $line_fukui|awk '{print $4}')
nbo_fuk=$(echo $line_fukui|awk '{print $5}')
echo "loewdin_fuk $loewdin_fuk nbo_fuk $nbo_fuk"
aver_fuk=$(($loewdin_fuk + $nbo_fuk))
\#aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l)
输出是:
loewdin_fuk +0.1662 nbo_fuk +0.1865
./collectFukui.sh: line 151: +0.1662 + +0.1865: syntax error: invalid
arithmetic operator (error token is ".1662 + +0.1865")
使用命令行:
aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l)
导致以下输出:
loewdin_fuk +0.1662 nbo_fuk +0.1865
(standard_in) 1: syntax error
我不明白怎么了...提前谢谢你!
最好的,
我
解决方案
这里的问题是bc
不认为+
是一元运算符。+0.1662 +0.1865
无效的语法也是如此。(如果第一个数字是负数就可以了,因为-
它是一元运算符。)
因此,如果要使用bc
,则需要执行以下操作:
aver_fuk=$(echo "scale=4; 0.5*(0$loewdin_fuk $nbo_fuk)" | bc -l)
无论是否$loewdin_fuk
以符号字符开头,都可以在没有空格的情况下添加 0。如果在两者之间放置一个空格,它将适用于具有显式符号字符的值,但对于没有符号的值会失败。
推荐阅读
- google-maps - 谷歌自动完成组件需要刷新才能正确加载 Vuejs
- python - 有什么方法可以通过解析/拆分 url 列表来创建 pandas 数据框?
- hyperledger-fabric - Hyperledger-composer 无法更改 BlockTimeout
- python - i cant sum the numbers (python)
- sql - Detect Value Changes beyond a threshold in Time Series data in SQL
- python - Shuffle only the last element of a list
- c++ - DiceSum - 如果骰子总和不是特定数字,如何扩展 if/if-else 语句以重新掷骰子
- javascript - 将object属性设置为括号中的值参数与不带括号
- javascript - 用函数创建方块并在 JavaScript 中移动带有 ID 的图片
- python - 我必须编写线性搜索,但我的代码似乎不起作用