postcss-calc icon indicating copy to clipboard operation
postcss-calc copied to clipboard

Allow rounding option

Open MartijnCuppens opened this issue 7 years ago • 4 comments

allowRounding (default: true)

With this variable set true, calc(100% / 3) will output 33.33333% (with precision: 5). If it is set false it will remain calc(100% / 3). Another example with allowRounding: false: calc(900% / 16) will output 56.25% with precision: 5 (because calc(900% / 16) == 56.25%), but calc(900% / 16) with precision: 0 (because calc(900% / 16) != 56%).

By default this option is true and this will result in the same behaviour as we have now. If it's set to false, we prevent for example calc(100% / 3) to be rounded to 33.33333%.

Closes #62

MartijnCuppens avatar Oct 26 '18 20:10 MartijnCuppens

There is no difference here from the current implementation. You can already disable rounding by setting precision to false.

andyjansson avatar Oct 27 '18 09:10 andyjansson

@andyjansson, there is a difference when the allowRounding is set false:

This option allows users to limit the default precision to what's defined in precision, but doesn't round the number if the rounded number isn't equal to the number itself. This may sound a bit vague, so let's demonstrate this with an example:

Let's assume you have configured precision: 5 and allowRounding: false:

  • calc(100% / 3) will output calc(100% / 3) because calc(100% / 3) != 33.33333%
  • calc(100% / 4) will output 25% because calc(100% / 4) == 25%

What's the advantage? We never have rounded numbers which can cause issues like https://github.com/twbs/bootstrap/pull/27374 and we don't have expressions like calc(100% / 4) that can be simplified.

This option is a bit tricky because it depends on another option, that's why I tried to explain it with examples instead of words.

MartijnCuppens avatar Oct 27 '18 09:10 MartijnCuppens

Please open an issue about it so it can be discussed further.

andyjansson avatar Oct 27 '18 11:10 andyjansson

/cc @MartijnCuppens can we rebase again? :smile:

alexander-akait avatar Apr 03 '19 13:04 alexander-akait