PWM - Peltier working code

What would be the other way without using dtostrf()?

You could split the float into two parts - the whole number and the fractional part. Then, multiply the fractional part by some amount and truncate. But why? There is nothing wrong with using dtostrf(). It is what you are doing AFTER calling dtostrf() that is the problem.