format()函数总是返回“0.00”

时间:2017-08-07 15:58:17

标签: python python-2.7 formatting

我正在运行一些可以提供双/浮回的计算:

a = float(4)
b = float(56100)
c = a / b

现在运行脚本时,我明白了:

7.1301e-05

我只需格式化此响应即可获得7.13。但是当我尝试这样做时,我得到0.00

percentage_connections_used = float(a) / float(b)
percentage_float = float(percentage_connections_used)
print(format(percentage_float, '.2f'))

我似乎无法弄清楚为什么在尝试格式化时会返回0。有人可能会告诉我发生了什么事吗?这是Python 2.7

2 个答案:

答案 0 :(得分:2)

我认为你的格式是正确的,但当你尝试舍入到2位小数时它实际上是舍入到0.00。

7.8125e-05 = 0.000078125

当呈现为2位小数时,您得到0.00。

您可以使用以下方法执行一些字符串操作来解析7.8125数字:

d = float(str(c).split('e')[0])
但是,这有点冗长,也许社区中的某些人可以做得更好。

顺便说一下,当我运行a / b时,我得到7.1301 ... e-05。

答案 1 :(得分:1)

7.8125e-050.000078125相同,因此仅使用两个小数点对其进行格式化会为您提供0.00。你可以做'.7f',这会得到你0.0000713。如果您希望以科学记数法输出,则应该明确地这样做。试试这个:

a = float(4)
b = float(56100)
c = a / b

print("{:.2e}".format(c))