【发布时间】:2015-01-31 18:52:21
【问题描述】:
我需要计算两个值之间的百分比变化。
我在这里的代码:
echo $time1
echo $time2
pc=$(( (($time2 - $time1)/$time1 * 100) ))
echo $pc
在控制台中带来这样的输出(使用set -xe 选项)
+ echo 1800
1800
+ echo 1000
1000
+ pc=0
+ echo 0
数学表达式中的代码似乎写得很好,但我得到了 -80 左右。为什么会发生在我身上?
问题的第二部分。我无权访问,也无法访问 bc 命令。据我所知,它可以给我我拥有的数字的绝对值。
所以.. 如果没有 bc 命令 - 这对于 IF 条件会是一个好主意吗?
if (( (( "$pc" > 20 || (( "$pc" < -20 )); then...
【问题讨论】:
-
Bash 只做整数运算,所以如果
$time2 - $time1小于$time1那么除法总是为零。但是,如果稍微重新排序表达式,例如先乘再除,结果应该会好一些。 -
这是否需要在纯 bash 中完成?
-
@TomFenech,不,它可以在任何适合我的工具中完成。例如可以在 perl 中完成。
-
你看过答案了吗?您需要任何其他说明吗?
标签: bash math arithmetic-expressions