Il semble que BC ne supporte pas les opérations de type float. Lorsque je le fais, echo 1/8 | bc
cela me donne un zéro.
J'ai vérifié bc (1)
, mais ça ne mentionne même pas float
, alors je me demande si c'est supporté?
Il semble que BC ne supporte pas les opérations de type float. Lorsque je le fais, echo 1/8 | bc
cela me donne un zéro.
J'ai vérifié bc (1)
, mais ça ne mentionne même pas float
, alors je me demande si c'est supporté?
Réponses:
bc
ne fait pas de virgule flottante mais fait des nombres décimaux à précision fixe. Le -l
drapeau mentionné par Hauke charge une bibliothèque mathématique pour, par exemple. trig fonctions mais cela signifie aussi
[...] l' échelle par défaut est 20
scale
est l'une des "variables spéciales" mentionnées dans la page de manuel. Vous pouvez le définir:
scale=4
Chaque fois que vous voulez ( -l
utilisé ou non). Il fait référence au nombre de chiffres significatifs utilisés dans une décimale . En d'autres termes, les solutions suivantes seront arrondies à ce nombre de chiffres après l'échelle décimale (précision ==).
L'échelle par défaut sans -l
est 0, ce qui signifie que les nombres sont arrondis.
La page de manuel dit:
Si bc est appelé avec l'option -l, une bibliothèque mathématique est préchargée [...]
La compréhensibilité de cela pourrait être améliorée, en effet ...
1) Les nombres en Colombie-Britannique ont une échelle. L'échelle d'un nombre ne doit pas être confondue avec le facteur d'échelle. La même "échelle" du monde est utilisée en tant que fonction pour interroger l'échelle d'un nombre ou en tant que paramètre pour définir le facteur d'échelle.
echo "scale=scale(1.1);11/10" | bc will return 1.1
2) Le facteur d'échelle détermine combien de chiffres sont conservés à droite du séparateur décimal lors de l'exécution d'opérations. Si s est le facteur d'échelle actuel, sa est l'échelle du premier opérande a, sb est l'échelle du deuxième opérande b, les résultats sont tronqués comme suit:
scale of result
a+b max(sa,sb)
a-b max(sa,sb)
a*b min(sa+sb , max(s,sa,sb))
a/b s
a%b so that a = b*quotient + remainder; remainder has sign of a
a^b min(sa×|b|, max(s,sa)); b must be integer
sqrt(a) max(s,sa)
3) À l'origine bc était un préprocesseur de dc. À l’heure actuelle, sur de nombreux systèmes, bc est un programme autonome.
Source: [ https://plan9.io/magic/man2html/1/dc]
echo "scale=4; 1/8" | bc