Have you tried setting one piston particle to 10C and another to 20C? (Hint: it works.)
That's because piston arm length is first calculated for every particle of the piston (by that floor(celsius / 10) method you discovered) and then the lengths are summed up (and then 1 is subtracted). So a two-particle piston with one particle set to 10C and another to 20C will yield a 2 pixel long arm. So will a 0C-30C combination, but not a 15C-15C one.