Арифметика с плавающей запятой

У меня очень простая проблема, я делаю функцию, которая получает некоторые числа с плавающей запятой и выполняет с ними пару операций в начале. Что-то вроде этого:

function x {
    A=$1
    B=$2

# here i need a ratio, so i do, let's say..

    sum=$(($A + $B))
    C=$(($A / $sum))

[lots of code here]

}

Проблема в том, что $1 и $2 являются числами с плавающей запятой, или даже если они являются целыми числами, соотношение, скорее всего, не будет целым числом, поэтому я не знаю, как с ними работать в bash.

Я пытался использовать канал bc при определении суммы и отношения, но он ничего не выводит.

Любая идея приветствуется! Спасибо!


person Ghost    schedule 21.12.2014    source источник


Ответы (2)


bc это хорошая идея. Я не знаю, что вы пробовали; один из способов сделать это

C=$(echo "$A / $sum" | bc -l)
person Wintermute    schedule 21.12.2014
comment
Идеальный! Я пропустил эхо при его определении, большое спасибо! (4 минуты, чтобы принять ответ) :) - person Ghost; 21.12.2014

с бк;

var=$(echo "scale=10; $A / $num" | bc)

echo $var

Обратите внимание на параметр scale, чтобы сообщить bc, сколько десятичных знаков вы хотите

person Gilles Quenot    schedule 21.12.2014