Bash, нужно посчитать переменные, округлить до 2 и сохранить в переменную - PullRequest
1 голос
/ 24 мая 2019

Мне нужно посчитать переменные, округлить до 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"

Не могли бы вы помочь мне, пожалуйста? В чем проблема? Что является лучшим решением для этого. Большое спасибо.

S.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

По возможности (хотя это будет не округление , а усечение до 3 десятичных знаков):

array=( ... ... ... ... ... 102.03 ... )
vat=0.21
pricevat=$(bc <<< "scale=3; (1+$vat)*${array[5]}")

Хитрость в том, чтобы иметь bcвыполнить округление, используя его специальную переменную scale, установленную на 3.

0 голосов
/ 24 мая 2019

Да, это работает!Я сделал это следующим образом.

Арифметические операции:

pricevat=$(echo "$vat * ${array[5]}" + ${array[5]} | bc -l)

Округление до трех мест:

pricevat=$(printf "%0.3f\n" $pricevat)

Если есть другой способ сделать это лучше или вместе наодна строка, дайте мне знать, пожалуйста.

Спасибо.

...