
bcは浮動小数点演算をサポートしていないようです。これはecho 1/8 | bc
0点を与えます。マニュアルページを確認しましたが、bc (1)
言及すらされていないのでfloat
サポートされているかと思います。
答え1
bc
浮動小数点数は処理しませんが、高精度の10進数は処理します。たとえば、Haukeが言及したフラグは-l
数学ライブラリをロードします。三角関数ですが、これも次のことを意味します。
[...]デフォルトスケール20である
scale
マニュアルページに記載されている多くの「特殊変数」の1つです。次のように設定できます。
scale=4
必要に応じて(-l
使用するかどうかにかかわらず)。それは以下を指す小数点以下の桁数に使用される有効桁数。つまり、後続の解決策は丸められます。下に小数点以下の桁数(==固定精度)。
デフォルトのスケールsans-l
は0です。これは、整数に丸め(下げ)されることを意味します。
答え2
マニュアルページには次のように記載されています。
-lオプションを使用してbcを呼び出すと、数学ライブラリがプリロードされます。 [...]
理解度が本当に良くなるでしょう…
答え3
数字
bc
が1つ含まれています。スケール。数値の割合を倍率引数と混同しないでください。同じ世界がscale
数値のスケールを照会する関数として使用されるか、スケール引数を設定する引数として使用されます。echo "scale=scale(1.1);11/10" | bc will return 1.1
スケーリング係数(
scale
変数/レジスタの値)は、操作を実行するときに小数点の右側に保持される桁数を決定します。s
現在の倍率引数がsa
最初のオペランドの倍率でa
あり、sb
2番目のオペランドの倍率である場合、b
結果は次のように切り捨てられます。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,as)
もともと
bc
。dc
今は多くのシステムでbc
スタンドアロンプログラムです。
また、見ることができますPOSIX仕様bc
。
答え4
MacOSの代替パス(簡単に言えば)は、オプションと-e
一緒にオプションを使用することです-l
。
-e expr --expression=expr
Run "expr" and quit. If multiple expressions or files (see below) are
given, they are all run before executing from stdin.
例:bc -e 1/8 -l