Görünüşe göre bc float işlemlerini desteklemiyor, yaptığım echo 1/8 | bc
zaman bana sıfırı getiriyor.
Kontrol ettim bc (1)
, ama bahsetmiyor bile float
, bu yüzden desteklenip desteklenmediğini merak ediyorum.
Görünüşe göre bc float işlemlerini desteklemiyor, yaptığım echo 1/8 | bc
zaman bana sıfırı getiriyor.
Kontrol ettim bc (1)
, ama bahsetmiyor bile float
, bu yüzden desteklenip desteklenmediğini merak ediyorum.
Yanıtlar:
bc
kayan nokta yapmaz ancak sabit ondalık sayılar yapar. -l
Bayrak Hauke yükleri örneğin bir matematik kütüphanesi bahseder. trig fonksiyonları ancak aynı zamanda anlamına gelir
[...] varsayılan ölçek 20
scale
man sayfasında belirtilen bir dizi "özel değişken" den biridir. Bunu ayarlayabilirsiniz:
scale=4
İstediğiniz zaman ( -l
kullanılmış olsun olmasın). Bu ifade eder , bir ondalık kullanılan önemli basamak sayısı . Başka bir deyişle, sonraki çözümler ondalık basamağından sonra o basamak sayısına yuvarlanır (== sabit doğruluk).
Varsayılan ölçek sansları -l
0'dır, yani tam sayılara yuvarlanır.
man sayfa diyor ki:
Bc, -l seçeneğiyle çağrılırsa, matematik kütüphanesi önceden yüklenir [...]
Bunun anlaşılabilirliği geliştirilebilir, gerçekten ...
1) bc'deki sayıların ölçeği vardır. Bir sayının ölçeği, ölçek faktörü ile karıştırılmamalıdır. Aynı dünya 'ölçeği', sayının ölçeğini sorgulamak için bir işlev olarak veya ölçek faktörünü ayarlamak için bir parametre olarak kullanılır.
echo "scale=scale(1.1);11/10" | bc will return 1.1
2) Ölçek faktörü, işlem yaparken ondalık basamağın sağında kaç basamağın tutulduğunu belirler. S, geçerli ölçek faktörü ise, sa, birinci işlenenin a ölçeğidir, sb, ikinci işlenenin b ölçeğidir, sonuçlar aşağıdaki gibi kesilir:
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) Başlangıçta, bc bir DC ön işlemcisiydi. Şimdi, birçok sistemde, bc bağımsız bir programdır.
Kaynak: [ https://plan9.io/magic/man2html/1/dc]
echo "scale=4; 1/8" | bc