不能用Python截断数字

时间:2015-11-28 20:29:36

标签: python string numbers format

我一直在寻找有关如何使用Python 3截断数字的多个看似错误的建议。我需要打印2个数字,小数点后两位。我的代码不起作用,Python抛出:Unknown format code for type 'str'

for row in reader:
    print("Time Stamp: %s - Temperature °C: %s - Humidity: %%: %s" % (row[0], "{:.2f}".format(row[1]), "{:.2f}".format(row[2])))

我尝试将%s更改为%f,但类似的错误。如何截断/修剪为2位小数?

3 个答案:

答案 0 :(得分:3)

我认为您的错误Unknown format code for type str表示row中的值不是数字而是字符串。您应该首先使用float进行转换。

 for row in reader:
    rowvals = [float(x) for x in row]
    print .... 

答案 1 :(得分:2)

您的列表中可能包含字符串。在格式化之前,只需将它们转换为浮动:

for row in reader:
    print("Time Stamp: %s - Temperature °C: %.2f - Humidity: %%: %.2f" % (row[0], float(row[1]), float(row[2])))

答案 2 :(得分:1)

首先,通过执行以下操作确保变量是float或int:

a = int(a)

或浮动

b = float(b)

对于数组,

val = [float(i) for i in val]

从这里开始,有两种选择。

1

a = <yournumber>
print("{0:.3}".format(a))

这将是圆的,因此2.618将返回2.62。

2

a = <yournumber>
print("{0:.2f}".format(a))

当放入2.618时,只会给你2.62这样的东西。