为什么嵌入式浮动打印在python中出错

时间:2018-10-20 11:31:46

标签: python floating-point

打印时我得到了奇怪的舍入效果。 使用下面的python代码,我试图将所有内容放在一行上。 但是,变量 s 似乎在第一行中打印错误

s = gb.score(train, y)
if (s>0.96)&(s<1.0):
   print("LR: {0:.3f} estimators: {0:.3f} score: {0:.16f}".format(learning_rate,est,s))
   print (s)

我从中得到的输出是:

LR:0.003估算器:0.003得分:0.0025000000000000
0.9696969696969697

为什么在第一行将S舍入为0.00250000? 我希望将其显示为第二行。

1 个答案:

答案 0 :(得分:1)

因为0中的{0:.16f}将插入第一个参数。这就是为什么在所有三个位置中仅插入learning_rate的值并设置其格式的原因。

尝试

print("LR: {0:.3f} estimators: {1:.3f} score: {2:.16f}".format(learning_rate,est,s))

或仅使用参数的顺序:

print("LR: {:.3f} estimators: {:.3f} score: {:.16f}".format(learning_rate,est,s))

为避免混淆,您还可以使用名称进行插入:

print("LR: {learningrate:.3f} estimators: {estimators:.3f} score: {score:.16f}".format(learningrate=learning_rate,estimators=est,score=s))