Question

The following command

echo 1.8e-308 | gawk '$1<0.05'

produce no output, while this one

gawk 'BEGIN{if(8.2547e-309<0.05){print "true"}}'

print "true".

This answer explain why the first command produce no otuput.

A possible workaround is

echo 1.8e-308 | awk '$1+0 < 0.05 {print}'

My question is: there is a better solution? For example some wrapper of awk that allow not to modify each script.

The optimal solution possibly would not require to recompile awk to use mpfr library.

Was it helpful?

Solution

Try the following:

echo 1.8e-308 | gawk '($1+0)<0.05'

produces:

1.8e-308

Some other interesting observations:

echo "True" | gawk '1.8e-308<0.05'

gives

True

and

echo "True" | gawk '1.8e-322<1.9e-322'

gives

True

whereas

echo "True" | gawk '1.8e-323<1.9e-323'

gives nothing..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top