'how to compute the float nuber in Linux?

I expect to compute the answer of the expression a=0;b=0.055;echo $((a * 60 + b))

however the output is as follows:

syntax error: invalid arithmetic operator (error token is ".055")

I expect the output is 0.055

when I input : a=0;b=0.055;echo "scale=3;a * 60 + b"|bc -l

the output is : 0

and input:a=0;b=0.055;echo "scale=3;a * 60 + b"|bc

the output is : 0

how can I solve this problem?



Solution 1:[1]

You were pretty close. Use $a and $b instead of just a and b like this:

a=0;b=0.055;echo "scale=3; (($a * 60 + $b)*100)/100"|bc

or in a file like this:

test.sh

#!/bin/bash

a=0
b=0.055
result=$(echo "scale=3; (($a * 60 + $b)*100)/100" | bc)
echo $result

That should give you the desired result of 0.055.

See https://askubuntu.com/questions/217570/bc-set-number-of-digits-after-decimal-point answer regarding how to handle scale with bc

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1