Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash,需要计算变量,四舍五入到2,并存储到变量_Bash_Variables_Integer - Fatal编程技术网

Bash,需要计算变量,四舍五入到2,并存储到变量

Bash,需要计算变量,四舍五入到2,并存储到变量,bash,variables,integer,Bash,Variables,Integer,我需要计算变量,四舍五入到2,然后存储到变量 例如: 我已经定义了数组${array[5]}中的变量和vat变量,我需要简单地计算 ( $vat * ${array[5]} + ${array[5]} ) 并存储到可变价格增值税 我试过: vat = 0.21 pricevat=$(echo "$vat * ${array[5]}" + ${array[5]} | bc -l) (( pricevat=$vat*${array[5]}+${array[5]})) 但什么都不管用: line

我需要计算变量,四舍五入到2,然后存储到变量

例如:

我已经定义了数组${array[5]}中的变量和vat变量,我需要简单地计算

( $vat * ${array[5]} + ${array[5]} )
并存储到可变价格增值税

我试过:

vat = 0.21

pricevat=$(echo "$vat * ${array[5]}" + ${array[5]} | bc -l)
(( pricevat=$vat*${array[5]}+${array[5]}))
但什么都不管用:

line 48: ((: pricevat=0.21*0.233+0.233: syntax error: invalid arithmetic operator (error token is ".21*0.233+0.233"
你能帮我吗?问题在哪里?这方面的最佳解决方案是什么。多谢各位


是的,它正在工作!我是这样做的

算术运算:

pricevat=$(echo "$vat * ${array[5]}" + ${array[5]} | bc -l)
四舍五入至3位:

pricevat=$(printf "%0.3f\n" $pricevat)
如果有其他方法可以做得更好或在同一条线上一起,请让我知道


谢谢。

尽管有可能,它不会四舍五入,但会截断到小数点后3位:

array=( ... ... ... ... ... 102.03 ... )
vat=0.21
pricevat=$(bc <<< "scale=3; (1+$vat)*${array[5]}")
诀窍是让bc使用其特殊的变量刻度进行舍入,将其设置为3。

。。。无法执行浮点运算,这是错误的根源。前一行很好用。您是否已经尝试过:mkfifo fifo;exec7>>execstdbuf-i0-o0bc-l>先进先出;执行6和7比例=3;1+$vat*${array[5]};读取-u 6-t.01结果。。。所以你可以要求使用FD7和FD6进行许多操作,只要你不改变它们,保持比例=3;。。。