Sida 1 av 1

Multiplicera två tal med BASH?

Postat: 02 dec 2009, 22:46
av mcdanne82
Hej

Är det någon som kan tipsa om hur man kan multiplicera två tal med decimaler med Bash script?

Tex 1.345 * 1000
Tex 1.321 * 2.345

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:05
av gein
$((1,345 * 1000))

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:06
av Plutonium
Detta är ett alternativ:

Kod: Markera allt

echo "scale=2; "1.345"*1000" | bc -l

Kod: Markera allt

echo "scale=2; "1.321"*2.345" | bc -l

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:10
av mcdanne82
Det fungerade tyvärr ej för mig jag får detta fel
matte.sh: matte.sh: 6: bc: not found

Jag använder Unslung (V2.3R63-uNSLUng-6.10-beta)

Jag kanske behöver installera något för att få BC att funka, har du något tips om vad paketet kan heta isåfall?

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:15
av mcdanne82
Hmm missade inlägget med $((1,345 * 1000))
Detta verkar ju funka perfekt, för komma decimaler.

Dock så verkar ju OWFS ge värden med punkt istället för komma och då verkar inte multipliceringen fungera alls.
Någon som har tips om hur man omvandlar punkten till ett komma.

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:28
av gein
$((1000 * `echo "1.501" | sed -e 's/\./,/'`))

Re: Multiplicera två tal med BASH?

Postat: 02 dec 2009, 23:38
av mcdanne82
hmm jag får resultatet 501
när jag körde $((1000 * `echo "1.501" | sed -e 's/\./,/'`))
det verkar inte som att scriptet bryrsig om att den skall gångra med 1000 utan tar bara bort det som står före punkten för kör jag echo $((4321 * `echo "2.3456" | sed -e 's/\./,/'`)) får jag resultatet 3456

Re: Multiplicera två tal med BASH?

Postat: 03 dec 2009, 04:30
av daromer
ang bc. du får lägga in bc.

Re: Multiplicera två tal med BASH?

Postat: 03 dec 2009, 08:14
av mcdanne82
daromer skrev:ang bc. du får lägga in bc.
Det var ju för enkelt att man skulle prova de.. Men det gick kanon att installera och nu funkar echo "scale=2; "1.345"*1000" | bc -l
perfekt, med punk som decimalskiljare och allt.

Tack

Re: Multiplicera två tal med BASH?

Postat: 03 dec 2009, 09:28
av gein
mcdanne82 skrev:hmm jag får resultatet 501
när jag körde $((1000 * `echo "1.501" | sed -e 's/\./,/'`))
det verkar inte som att scriptet bryrsig om att den skall gångra med 1000 utan tar bara bort det som står före punkten för kör jag echo $((4321 * `echo "2.3456" | sed -e 's/\./,/'`)) får jag resultatet 3456
Ja, det fick jag med insåg jag nu. , verkar tolkas som listavgränsare snarare än decimal. Jag tror man måste använda bc istället.