Szukaj…


Matematyka za pomocą dc

dc jest jednym z najstarszych języków Uniksa.

Wykorzystuje odwrotną notację polerowania , co oznacza, że najpierw układasz liczby, a następnie operacje. Na przykład 1+1 jest zapisany jako 1 1+ .

Aby wydrukować element z góry stosu, użyj polecenia p

echo '2 3 + p' | dc
5

or

dc <<< '2 3 + p'
5

Możesz wydrukować górny element wiele razy

dc <<< '1 1 + p 2 + p'
2
4

W przypadku liczb ujemnych użyj _ prefiksu

dc <<< '_1 p'
-1

Możesz także używać wielkich liter od A to F dla liczb od 10 and 15 i . jako przecinek dziesiętny

dc <<< 'A.4 p'
10.4

dc używa precyzji abitracyjnej, co oznacza, że precyzja jest ograniczona tylko dostępną pamięcią. Domyślnie dokładność jest ustawiona na 0 miejsc po przecinku

dc <<< '4 3 / p'
1

Możemy zwiększyć precyzję za pomocą polecenia k . 2k

dc <<< '2k 4 3 / p'
1.33

dc <<< '4k 4 3 / p'
1.3333

Możesz go również używać w wielu liniach

dc << EOF
1 1 +
3 *
p
EOF
6

bc jest preprocesorem dla dc .

Matematyka za pomocą BC

bc to język kalkulatora o dowolnej precyzji. Można go użyć interaktywnie lub wykonać z wiersza poleceń.

Na przykład może wydrukować wynik wyrażenia:

echo '2 + 3' | bc
5

echo '12 / 5' | bc
2

W przypadku arytmetyki zmiennoprzecinkowej możesz zaimportować standardową bibliotekę bc -l :

echo '12 / 5' | bc -l
2.40000000000000000000

Można go używać do porównywania wyrażeń:

echo '8 > 5' | bc
1

echo '10 == 11' | bc
0

echo '10 == 10 && 8 > 3' | bc
1

Matematyka wykorzystująca możliwości bash

Obliczenia arytmetyczne można również wykonać bez angażowania innych programów takich jak ten:

Mnożenie:

echo $((5 * 2))
10

Podział:

echo $((5 / 2))
2

Modulo:

echo $((5 % 2))
1

Potęgowanie:

echo $((5 ** 2))
25

Matematyka za pomocą wyraż

expr lub Evaluate expressions ocenia wyrażenie i zapisuje wynik na standardowym wyjściu

Podstawowa arytmetyka

expr 2 + 3
5

Podczas mnożenia musisz uciec od znaku *

expr 2 \* 3
6

Możesz także użyć zmiennych

a=2
expr $a + 3
5

Pamiętaj, że obsługuje tylko liczby całkowite, więc wyrażenie takie jak ten

expr 3.0 / 2

wyrzuci błąd expr: not a decimal number: '3.0' .

Obsługuje wyrażenia regularne w celu dopasowania wzorców

expr 'Hello World' : 'Hell\(.*\)rld'
o Wo

Lub znajdź indeks pierwszego znaku w ciągu wyszukiwania

Spowoduje to expr: syntax error w systemie Mac OS X , ponieważ używa polecenia BSD wyrażenie, które nie ma polecenia indeksowania, podczas gdy wyrażenie w systemie Linux to ogólnie wyrażenie GNU

expr index hello l
3

expr index 'hello' 'lo'
3


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow