convert scientific notation to decimal in bash

arithmetic-expressions, bash, decimal, notation

Solution

I think the best way to do it is using awk. For example, in the case of the number "1.0074E+05"

`echo "1.0074E+05" | awk -F"E" 'BEGIN{OFMT="%10.10f"} {print $1 * (10 ^ $2)}'`

the output:

100740.0000000000

obviously you can use less precision then 10 decimal :)

Problem

I would like to convert a number that is stored in scientific notation into a floating point decimal, so I can then perform some comparisons on the data. This is being done in a bash script - here is a small snippet of the code: ``` while read track_id landfall_num gate_id pres_inter do if [[ $landfall_num == 0001 ]] then start_flag = true echo DING DING $start_flag if [[ $pres_inter < 97000 ]] then echo Strong Storm From North $track_id, $gate_id, $pres_inter fi fi done < $file ``` My problem is that my `<` operand is selecting basically all of the pressure values, which are stored in scientific notation, when I use `<`, and none when I use `>`. I am looking at atmospheric pressure measurements in pascals rather than millibars. Here is sample output: ``` Strong Storm From North 0039988 0017 1.0074E+05 Strong Storm From North 0037481 0018 9.9831E+04 ``` Neither of these storms should be meeting the selection criteria!

Original source