Portál AbcLinuxu, 6. května 2024 15:52


Dotaz: Jak dělit v bash

30.10.2012 14:59 Jorky
Jak dělit v bash
Přečteno: 536×
Odpovědět | Admin
Ahoj, poradil by prosím někdo jak v bash vydělit 10/6 s výsledkem 1.6 a ne s výsledkem 2? Děkuji za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 30.10.2012 15:05 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak dělit v bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
bc -l -e 'scale=1; 10/6' -e quit
Don't panic!
30.10.2012 15:11 Jorky
Rozbalit Rozbalit vše Re: Jak dělit v bash
bc -l -e 'scale=1; 10/6' -e quit
Něco se mu nelíbí :-(
bc: invalid option -- 'e'
Jesus Jimenez avatar 30.10.2012 15:38 Jesus Jimenez | skóre: 29
Rozbalit Rozbalit vše Re: Jak dělit v bash
echo 'scale=1; 10/6' | bc -l
Doaenův zákon průtahů: Čím pomaleji pracuješ, tím méně naděláš chyb. -- Murphy
Tarmaq avatar 30.10.2012 17:03 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak dělit v bash
jj tohle je taky funkcni.. vychazel jsem z bc co je ve freebsd a tam prepinac -e je ;]
Don't panic!
30.10.2012 17:24 Jorky
Rozbalit Rozbalit vše Re: Jak dělit v bash
echo 'scale=1; 10/6' | bc -l
a proč nefunguje tohle?
a=10
b=6
VAR=$(echo 'scale=1; $a/$b' | bc -l)
echo $VAR
Tarmaq avatar 30.10.2012 17:45 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Jak dělit v bash
protoze tam mas apostrofy misto uvozovek.. zkus:
a=10
b=6
VAR=$(echo "scale=1; $a/$b" | bc -l)
echo $VAR
Don't panic!
30.10.2012 18:45 Jorky
Rozbalit Rozbalit vše Re: Jak dělit v bash
Aha, díky ale stejně to je nějaké divné :-(
a=1.1
b=2
VAR=$(echo "scale=1; $a/$b" | bc -l)
echo $VAR

výsledek je ".5" místo "0.5"
30.10.2012 18:54 l4m4
Rozbalit Rozbalit vše Re: Jak dělit v bash
.5 a 0.5 je stejné číslo a počáteční nuly tvůj požadavek neobsahoval.

Lze to dále prohnat přes printf '%.1f', který počáteční nulu doplní (printf je narozdíl od bc skutečně builtin bashe).

Nejzvláštnější ovšem je, že chceš výsledek 1.6, nikoli 1.7, což je 10/6 po správném zaokrouhlení.
30.10.2012 19:03 Jorky
Rozbalit Rozbalit vše Re: Jak dělit v bash
Ano, skutečně to je 1.7 ale to je teď jedno. K výsledku přičtu vždy + 0.5 a nula bude vyřešena, akorát nevím jak z toho výsledku udělám zase jen klasické zaokrouhlené číslo, v tomto případě to bude číslo "2". Díky
30.10.2012 19:56 l4m4
Rozbalit Rozbalit vše Re: Jak dělit v bash
Trochu se děsím odpovídat, protože se to vyvíjí způsobem, že by následující dotaz mohl být, jak se teď pomocí těchto základních operací implementuje FFT.

Proč musíš provádět numerické výpočty v shellu? awk? python? FORTRAN!?
30.10.2012 16:21 l4m4
Rozbalit Rozbalit vše Re: Jak dělit v bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
To je nějaká domácí úloha?

A má to být nutně v bashi, nebo lze použít další programy jako bc?
div() {
  local -i n=$3 p=1 r
  while test $n -gt 0; do p=$((p*10)); n=$((n-1)); done
  r=$((p*$1/$2))
  echo ${r:0:-$3}.${r: -$3:$3}
}

div 10 6 1

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.