【问题标题】:Python: int(3.0) = 2蟒蛇:int(3.0)= 2
【发布时间】:2015-02-27 03:50:30
【问题描述】:

观察下面的python程序

def goo(y,x):
    y = float(y)
    x = float(x)
    yup = (y - x - 1) / x
    yup = str(yup)
    yup = yup.split(".")
    decimal = "." + yup[1]
    decimal = float(decimal)
    output = decimal / (1/x)

    print output
    print int(output)

goo(9,5)

当程序执行“打印输出”时,答案是 3.0

当程序执行“print int(output)”时,答案是 2

"print int(output)" 应该执行以交付 3,而不是 2

为什么会这样?

【问题讨论】:

  • Python 2 还是 Python 3?这一点很重要,因为默认情况下/ 的语义在两者之间是不同的。
  • @Makoto 显然是 Python 2,从 print 中缺少 () 来看。
  • 这是在 ios 上使用 Pythonista 应用的 python 2.7
  • 浮点数不能在计算机中精确表示。
  • 我不明白为什么这很重要。变量“输出”等于 3.0。当它变成 int(3.0) 时,它等于 2,这是错误的。

标签: python floating-point int


【解决方案1】:

print 语句的默认值是将值四舍五入到最接近的值。 int() 截断。

>>> print 2.99999999999999
3.0
>>> print int(2.99999999999999)
2

如果您想查看更精确的表示,请使用repr

>>> print repr(2.9999999999999)
2.9999999999999

【讨论】:

  • 啊,我明白了。我不知道打印圆形的东西。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-27
  • 2018-01-16
  • 2010-10-21
  • 2016-05-28
  • 2014-08-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多