Предполагая, что вы ссылаетесь на результат sensor.get_temperature()
, просто format
это на соответствующую ширину, например ::
params = urllib.parse.urlencode({'temperature': format(sensor.get_temperature(), '.1f')})
Альтернативный подход (который оставляет float
) заключается в использовании функции round
:
params = urllib.parse.urlencode({'temperature': round(sensor.get_temperature(), 1)})
Для случая, когда требуется фактическая строка, я бы рекомендовал отформатировать ее явно (поскольку библиотеки, форматирующие float
, могут не соответствовать правилам форматирования Python и могут в конечном итоге предоставить дополнительные десятичные знаки).
Обратите внимание, что правильное округление для обоих случаев дает 23,4, а не 23,3. Если вы действительно хотите укоротить, а не округлить, вы застряли в некрасивом умножении, усечении и делении, например ::1018*
params = urllib.parse.urlencode({'temperature': round(int(sensor.get_temperature() * 10) / 10, 1)})
Поскольку преобразование в int
явно удаляет конечные десятичные разряды, будут вычислены следующие значения:
- После умножения
233.57
- После
int
преобразования 233
- После деления
23.3
- После
round
(необходимо для обработки случаев, когда неточность с плавающей запятой может привести к тому, что при делении на 10 будет больше одной десятичной точки): 23.3