The spec should be clear that tile encoders may choose any representation (sint, uint, float, or double) for numeric attributes that correctly represents the value, and should choose the one that produces the smallest tile, rather than preserving the type of the original input value, so, for example, 2.0, 2, and 2u will all be represented as the same uint 2.