You have to provide a lot more information to tell what's going on. Here is a rule that works fine "stuffing a float/decimal down its throat with a setTemperature() call":
Alright, let's see what I can dig up.
So first, to make the solution work since I woke up to a cold house, I added a round() instruction in the rule despite my OCD self wanting to see fractional degrees (yes, it bugs me). The error went away immediately.