bash和bc数学计算与小数点

时间:2017-03-22 15:30:47

标签: bash math decimal-point bc

我正在尝试使用“bc”在Bash脚本中实现以下计算,但“scale”选项产生的结果不正确,最后有2个额外的零,这意味着我必须手动修剪它(丑陋) )。

计算:

((2592000-239)÷2592000)×100

预期结果:99,990779321(但我只想显示2位小数)

在Bash中:

echo "scale=2; ((2592000-239)/2592000)*100" | bc

99.00

echo "scale=3; ((2592000-239)/2592000)*100" | bc

99.900

echo "scale=4; ((2592000-239)/2592000)*100" | bc

99.9900

echo "scale=5; ((2592000-239)/2592000)*100" | bc

99.99000

echo "scale=8; ((2592000-239)/2592000)*100" | bc

echo "scale=8; ((2592000-239)/2592000)*100" | bc

99.99077900

echo "scale=10; ((2592000-239)/2592000)*100" | bc

99.9907793200

根据手册页:

  

NUMBERS          bc中最基本的元素是数字。数字是任意精度数字。此精度均为整数   部分和分数部分。所有数字都有代表          内部以十进制表示,所有计算均以十进制表示。 (此版本截断了除法和乘法运算的结果。)   数字有两个属性,即长度          和规模。长度是数字中有效小数位的总数,小数位数是总数   小数点后的小数位数。例如:                  .000001的长度为6,比例为6。                  1935.000的长度为7,比例为3。

我理解正确吗?

2 个答案:

答案 0 :(得分:2)

您可以使用:

echo 'scale=2; 100*(2592000-239)/2592000' | bc -l

99.99

您获得99.00,因为您首先获得.99的分数,而当它与100相乘时,它变为99.00(由于scale-2

答案 1 :(得分:2)

如果您不想检查ThisWorkbook.Sheets(1).Select ThisWorkbook.Sheets(2).Select (False) ' like holding ctrl ThisWorkbook.Sheets(3).Select (False) ThisWorkbook.Sheets(2).Select (False) ' line 2 again; essential sacrifice for the vba-gods. 语句中是否有正确的数学运算顺序,(比例应用于除法),只需使用默认精度计算bc,输出格式为bc,如:

bash