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

На этот вопрос уже есть ответ здесь:

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

#!/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, но не знаю, куда она идет.

РЕДАКТИРОВАТЬ: Я пытался добавить | 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

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

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