Recherche…


Math utilisant dc

dc est l'une des plus anciennes langues sur Unix.

Il utilise la notation polonaise inversée , ce qui signifie que vous empilez d'abord des nombres, puis des opérations. Par exemple 1+1 est écrit comme 1 1+ .

Pour imprimer un élément depuis le haut de la pile, utilisez la commande p

echo '2 3 + p' | dc
5

or

dc <<< '2 3 + p'
5

Vous pouvez imprimer l'élément supérieur plusieurs fois

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

Pour les nombres négatifs, utilisez _ préfixe

dc <<< '_1 p'
-1

Vous pouvez également utiliser des lettres majuscules de A to F pour les nombres compris entre 10 and 15 et . comme point décimal

dc <<< 'A.4 p'
10.4

dc utilise une précision différente, ce qui signifie que la précision est limitée uniquement par la mémoire disponible. Par défaut, la précision est définie sur 0 décimale

dc <<< '4 3 / p'
1

Nous pouvons augmenter la précision en utilisant la commande k . 2k utilisera

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

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

Vous pouvez également l'utiliser sur plusieurs lignes

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

bc est un préprocesseur pour dc .

Math utilisant bc

bc est un langage de calcul arbitraire de précision. Il pourrait être utilisé de manière interactive ou être exécuté à partir de la ligne de commande.

Par exemple, il peut imprimer le résultat d'une expression:

echo '2 + 3' | bc
5

echo '12 / 5' | bc
2

Pour l'arithmétique flottante, vous pouvez importer la bibliothèque standard bc -l :

echo '12 / 5' | bc -l
2.40000000000000000000

Il peut être utilisé pour comparer des expressions:

echo '8 > 5' | bc
1

echo '10 == 11' | bc
0

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

Math utilisant les capacités de bash

Le calcul arithmétique peut également être effectué sans impliquer d’autres programmes comme celui-ci:

Multiplication:

echo $((5 * 2))
10

Division:

echo $((5 / 2))
2

Modulo:

echo $((5 % 2))
1

Exponentiation:

echo $((5 ** 2))
25

Math utilisant expr

expr ou Evaluate expressions évalue une expression et écrit le résultat sur une sortie standard

Arithmétique de base

expr 2 + 3
5

En multipliant, vous devez échapper au signe *

expr 2 \* 3
6

Vous pouvez également utiliser des variables

a=2
expr $a + 3
5

Gardez à l'esprit qu'il ne supporte que les entiers, donc l'expression comme ça

expr 3.0 / 2

va lancer une erreur expr: not a decimal number: '3.0' .

Il prend en charge les expressions régulières pour faire correspondre les modèles

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

Ou trouvez l'index du premier caractère dans la chaîne de recherche

Cela produira expr: syntax error sous Mac OS X , car elle utilise BSD expr qui n’a pas la commande index, alors que expr sous Linux est généralement GNU expr

expr index hello l
3

expr index 'hello' 'lo'
3


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow