2

This expression, I think, should return 0.000, not 0.

echo "scale = 3 ; 0 / 2" | bc

Using echo "scale = 3 ; scale(0 / 2)" | bc outputs 3, so it's obvious that the scale is applies, but it's not displaying the output properly.

What's going on?

vmrob
  • 2,966
  • 29
  • 40

1 Answers1

3

When dividing 0 by something, the scale won't be considered as it is sure there will never be any decimal values.

You're right, your scale applies, for example try with echo "scale = 3; 1/2" | bc and the output will be .500

Also, if you use a scale only to avoid truncating, you can use the -l options which will allow 20 decimal digits.

This also prove that when dividing 0 by something, the decimal are ignored as when you type :

echo "0/2" | bc - l

the output will be 0

echo "1/2" | bc - l

the output will be .50000000000000000000

I hope I made it a little more clear.

Jean-François Savard
  • 20,626
  • 7
  • 49
  • 76