【问题标题】:Can someone explain this behavior with Python? [duplicate]有人可以用 Python 解释这种行为吗? [复制]
【发布时间】:2019-12-06 07:48:28
【问题描述】:

有人可以解释这种行为吗?

print("%.2f" % (model.x[1].value))
X = int(model.x[1].value)
print("%.2f" % X)

输出:

3.00
2.00

谢谢

【问题讨论】:

  • 如果model.x[1].value == 2.9999 怎么办?
  • 对于 %.2f 格式,2.9999 不应该打印为 2.99 吗?格式是否进行舍入?
  • 不,是的。它会四舍五入,因为该值更接近 3.00 而不是 2.99

标签: python integer double


【解决方案1】:

model.x[1].value 小于 3 但 >= 2.995 时,当打印到小数点后 2 位时,它将向上舍入到 3.00。但是当您应用int 函数时,它将被截断为值2 的整数,当与.2f 格式一起使用时,它将打印为2.00

>>> x = 2.994
>>> print(f"{x:.2f}")
2.99

>> x = 2.995
>>> print(f"{x:.2f}")
3.00

【讨论】:

    【解决方案2】:

    谢谢各位。该值确实不是整数。我被一个混合整数非线性规划求解器愚弄了。似乎它本身并没有将解四舍五入到整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-02
      • 2016-09-18
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多