Shell

Shell

Made by DeepSource

Increase precision by replacing a/b*c with a*c/b SH-2017

Anti-pattern
Major

Problematic code:

percent=$((count/total*100))

Preferred code:

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.

Exceptions:

If you want and expect truncation you can ignore this issue.

The checker won't be triggered when b and c are identical expressions (e.g. a/10*10), under the assumption that the intent is to round to the nearest 10 rather than the no-op of multiply by 1.