【问题标题】:Why does my round() function fails to calculate correct values for some inputs in Python?为什么我的 round() 函数无法为 Python 中的某些输入计算正确的值?
【发布时间】:2023-01-14 19:36:36
【问题描述】:

我试图在两个值相除后得到一个整数值。例如,对于输入 dividend=10 和 divisor =3 ,我的预期输出是 3 但它说的是 3.0,对于输入 p = 7 和 t = -3 它的预期输出是 -2 但它显示 -3.0。当我尝试在 Pycharm 中运行这段代码时,我得到了预期的结果,但是当我在 Leetcode 编译器中运行它时,我得到了以下错误。我可以优化这个解决方案吗?下面是我的代码

class Solution(object):

    def divide_integer(self,dividend,divisor):

        res = dividend/divisor
        return round(res)

if __name__ == "__main__":
    p=7
    t=-3
    dividend =10
    divisor =3

    print(Solution().divide_integer(p,t))
    print(Solution().divide_integer(dividend,divisor))

【问题讨论】:

  • 您能否确认您使用的是 python2 还是 python3? / 的行为彼此之间非常不同。这也可以解释你的 pycharm 和你的 leetcode 环境之间的区别,如果其中一个使用 python2 而另一个使用 python3
  • pycharm 中的 Python 3.9 解释器和 leetcode 中的 Python 2

标签: python python-3.x math rounding


【解决方案1】:

你描述的是python2和python3之间的显着差异,几乎可以认为是不同的编程语言。

Python3

在 python3 中,/ 总是返回一个漂浮, round 总是返回一个整数.

print(2 / 1)
# 2.0

print(round(3.5))
# 4

蟒蛇2

在 python2 中,/ 返回一个 int 或一个 float,具体取决于您是除以 int 还是 float; round 总是返回一个漂浮.

print (8 / 4)
# 2
print (9 / 4)
# 2

print (8.0 / 4.0)
# 2.0

print (9.0 / 4.0)
# 2.25

print (round(3))
# 3.0

识别python版本

看到这个相关问题:Which version of python do I have installed?

在控制台中,您可以键入:python -vpython --version

在 python 解释器中,您可以键入:

import sys

print(sys.version)

还有这个有趣的“hack”可以利用 / 的行为差异在 python2 中打印“2”,在 python3 中打印“3”:

print( (3/2) * 2 )

#python3:  3.0
#python2:  2

【讨论】:

  • 我应该在哪里修改代码?我在 Pycharm 中使用的 Python 版本是 3.9.6
猜你喜欢
  • 2014-04-08
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2022-11-21
  • 1970-01-01
相关资源
最近更新 更多