在 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
我有以下代码
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