a/b*c
with a*c/b
.percent=$((count/total*100))
percent=$((count*100/total))
If integer division is performed before multiplication, the intermediate result will be truncated causing a loss of precision.
In this case, if count=1
and total=2
, then
the problematic code results in percent=0
, while the
correct code gives percent=50
.
If you want and expect truncation you can ignore this message.
ShellCheck doesn't warn when b
and c
are
identical expressions, e.g. a/10*10
, under the assumption
that the intent is to rounded to the nearest 10 rather than the no-op of
multiply by 1
.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.