Почему я не могу сделать позволенного с десятичными числами в оболочке? Что такое BC? [дубликат]

Этот вопрос уже имеет ответ здесь:

Я пытаюсь сделать это в Ubuntu virtualbox с текстом оболочки:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
n=3
let promedio=n1+n2+n3/3
echo $promedio

о Среднем студенческом классе. Но затем терминал показывает ошибку:

line 7: let: 3.5: syntax error: invalid arithmetic operator (error token is ".5")

Почему? Я не могу сделать + с числами. Что я могу сделать?

Я читал о команде BC, но я не знаю, куда она идет.

Править: Я пытался добавить | до н.э в конце, но являюсь той же ошибкой. Также я пытался смотреть на сообщение об этом, но они используют что-то другое, что я действительно не понимаю, потому что я являюсь действительно новым с Ubuntu. Они используют $echo или что-то как этот кроме кода, который я использую, отличается.

2
задан 13 November 2019 в 11:22

1 ответ

В ударе нет никакой арифметической операции с плавающей точкой. Так, можно использовать BC для вычисления его:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
promedio=`echo $n1 + $n2+ $n3/3 | bc`
echo $promedio   # 3.5 + 3.6 + 1 = 8.1 **This might be not what you want**

до н.э простой калькулятор командной строки.

BTW, echo <expression> | bc команда отправит вычисление выражения, которое получено с помощью BC для избиения.

Немного объяснения:

  • Так, путем инкапсуляции с два ' , Вы говорите, что просередина месяца значения является результатом, который получен командой. (Другими словами, это называют заменой команды, см. здесь для получения дополнительной информации)

  • При помощи echo, Вы говорите, что результатом будет вывод некоторого вычисления, которое получено BC

  • И в этих командах существует логический дефект, если Вы будете использовать bc как это, то это разделится с точки зрения целого числа, (3.7/3 = 1), таким образом, необходимо будет использовать bc -l, команда к (3.7/3 = 1.2333...) вычисляет точно.

И разделить сумму этих 3 чисел, необходимо правильно сделать круглую скобку:

#!/bin/bash

n1=3.5
n2=3.6
n3=3.7
promedio=`echo "($n1 + $n2+ $n3)/3" | bc -l`
echo $promedio     # (3.5 + 3.6 + 3.7)/3 = 3.60000...
3
ответ дан 2 December 2019 в 02:39

Другие вопросы по тегам:

Похожие вопросы: