- From: Christoph Päper <christoph.paeper@crissov.de>
- Date: Fri, 27 Jan 2012 11:56:32 +0100
- To: www-style list <www-style@w3.org>
Tab Atkins Jr.:
> On Thu, Jan 26, 2012 at 11:06 AM, Christoph Päper
>>
>> Would it make sense then to leave out “round”, i.e. ‘up()’, ‘down()’ etc.?
>
> We discussed using floor/ceil like most languages do,
I think this pair of functions is usually used without a parameter and they round to the closest upper or lower integer, whereas “round” often has a parameter to specify the number of digits after the decimal divider. Therefore
floor(foo) == down(foo, 0)
ceil(foo) == up(foo, 0)
This, of course, only applies to unitless numbers, not CSS values. We could construct a difference, though:
floor(4em, 1.5em) = 3em = down(4em, 1.5em)
floor(5em, 1.5em) = 3em ≠ down(5em, 1.5em) = 4.5em
‘floor’ and ‘ceil’ would use only those multiples of the modulus that are integers. I don’t know if that’s a desirable feature, but it supports not to choose these names for standard rounding up and down.
I could also see them differ for negative values instead. (Btw., I think negative moduli should work just fine. Do we need ‘abs()’, though?)
floor(-4em, 1.5em) = -3em ≠ down(-4em, 1.5em) = -4.5em
ceil(-4em, 1.5em) = -4.5em ≠ up(-4em, 1.5em) = -3em
Rounding direction:
floor: 0
ceil: ±∞
down: –∞
up: +∞
Rounding to odd or even, however, is a feature that is useful to have in CSS, because it will result in better distributed sums of rounded values:
0.5 + 1.5 = 2.0
round(0.5 + 1.5) = round(2.0) = 2.0
round(0.5) + round(1.5) = 1.0 + 2.0 = 3.0
up(0.5) + up(1.5) = 1.0 + 2.0 = 3.0
down(0.5) + down(1.5) = 0.0 + 3.0 = 3.0
odd(0.5) + odd(1.5) = 1.0 + 1.0 = 2.0
even(0.5) + even(1.5) = 0.0 + 2.0 = 2.0
… unless you mix them:
up(0.5) + down(1.5) = 1.0 + 1.0 = 2.0
down(0.5) + up(1.5) = 0.0 + 2.0 = 2.0
odd(0.5) + even(1.5) = 1.0 + 2.0 = 3.0
even(0.5) + odd(1.5) = 0.0 + 1.0 = 1.0
> but I can't consistently spell ceil correctly,
Spelling arguments come up on a regular basis and, not being a native speaker, always puzzle me.
PS: Maybe rounding better was a part of ‘calc’:
calc(<expression> [round <modifier>? <modulus>]? )
Received on Friday, 27 January 2012 10:57:06 UTC