在 python 中舍入值时遇到问题

Facing issue while rounidng up a value in python

我有以下代码

import math

a = (4, 31)
b = (0, 29)
c = (1, 31)

print(int(math.ceil(sum(a) / 7)))
print(int(math.ceil(sum(b) / 7)))
print(int(math.ceil(sum(c) / 7)))

我得到的输出为 5,4,4

理想情况下我应该得到 5, 5, 5

我不确定这里发生了什么。如果在 python 控制台中尝试相同的操作,我会得到预期的输出 (5,5,5),但在 python 中,如果我编写程序并执行它,我会得到 5,4,4。

当您想除以 float 时,您正在除以 integer。使用 /7. 而不是 /7:

import math

a = (4, 31)
b = (0, 29)
c = (1, 31)

print(int(math.ceil(sum(a) / 7.)))
print(int(math.ceil(sum(b) / 7.)))
print(int(math.ceil(sum(c) / 7.)))

输出

5
5
5

添加

import sys
print(sys.version)

我的猜测是,当您将 运行 作为程序执行时,您正在执行 Python 2 的某个版本,但是 Python 3 "in the Python console" 的某个版本。 / 应用于整数在 Pythons 2 和 3 之间表现不同。

Python 2 隐含地将您的浮点中间结果转换(截断)为下一个较低的整数。所以你得到

   sum((0,29))/7
   => 4

如果你想要一个浮点数结果,你需要让任何操作数是一个浮点数:

   sum((0,29))/7.0
   => 4.1428571428571432

或者像这样将其中一个操作数转换为浮点数:

   sum((0,29))/float(7)
   => 4.1428571428571432

那么您的代码也将在 python2 中工作。 Python3 已经使用浮点中间结果,所以相同的代码在 p3 中看起来像这样:

   sum((0,29))/7
   => 4.1428571428571432
   sum((0,29))/7.0
   => 4.1428571428571432

详情请看这篇文章:http://www.informit.com/articles/article.aspx?p=1439189