python - 如何减少 POST 请求中的小数
问题描述
我的 POST 请求发送带有 3 位小数的输出,而想要的是 1
我无法理解我应该调整什么以在 POST 请求中发送 1 个小数点
conn = http.client.HTTPConnection("127.0.0.1:8080")
for sensor in W1ThermSensor.get_available_sensors():
print("Sensor %s with id %s has temperature %.2f" % (sensorNameList.get(sensor.id), sensor.id, sensor.get_temperature()))
try:
params = urllib.parse.urlencode({'temperature': sensor.get_temperature()})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn.request("POST", "/WeatherStationServer/api/temperature/" + sensorNameList.get(sensor.id), params, headers)
输出为 23.357 而应该是 23.3
解决方案
假设您指的是 的结果sensor.get_temperature()
,只需format
将其调整为适当的宽度,例如:
params = urllib.parse.urlencode({'temperature': format(sensor.get_temperature(), '.1f')})
另一种方法(留下 a float
)是使用round
函数:
params = urllib.parse.urlencode({'temperature': round(sensor.get_temperature(), 1)})
对于需要实际字符串的情况,我建议明确格式化它(因为格式化 a 的库float
可能不遵循 Python 的格式化规则,并且最终可能会提供额外的小数位)。
请注意,这两种情况的正确舍入都会产生 23.4,而不是 23.3。如果你真的想截断而不是取整,那么乘法、截断和除法会有点难看,例如:
params = urllib.parse.urlencode({'temperature': round(int(sensor.get_temperature() * 10) / 10, 1)})
由于转换为int
显式删除尾随小数位,这将计算以下值:
- 乘法后
233.57
int
转换后,233
- 分开后,
23.3
- 之后
round
(处理浮点不精确可能导致除以 10 产生多于一位小数的情况所必需的):23.3
推荐阅读
- python - 试图在 python 3 中获取所有不等于 0.000000 的列值
- mysql - 如何使用触发器防止插入表
- java - 什么实现更有效地计算数字样本中的出现次数?
- python - 在 Python 中使用 Twilio 接收和处理 SMS
- python - 'WSGIRequest' 对象没有属性 'session' 和 'user'
- python - Python在txt文件中搜索输入
- javascript - 语法错误:意外的令牌,预期的 { (1:7) ,create-react-app
- python - 从元组中提取边集
- apl - 将函数应用于矩阵的随机行
- javascript - 如何禁用向左滚动?