python2.7中的除法不会产生十进制值
这是我的小规模项目。目的是估算pi。我知道它不整洁,但算法是正确的python2.7中的除法不会产生十进制值,python,floating-point,division,Python,Floating Point,Division,这是我的小规模项目。目的是估算pi。我知道它不整洁,但算法是正确的 adds = 0 subtracts = 0 for x in range(0, 10): adds += 1/(1 + 4*x) subtracts += 1/(3 + 4*x) print(adds) #DEBUGGING print(subtracts) #DEBUGGING pi = float(4*(adds + subtracts) print(pi) 看起来应该有用,对吧?在Py
adds = 0
subtracts = 0
for x in range(0, 10):
adds += 1/(1 + 4*x)
subtracts += 1/(3 + 4*x)
print(adds) #DEBUGGING
print(subtracts) #DEBUGGING
pi = float(4*(adds + subtracts)
print(pi)
看起来应该有用,对吧?在Python3上,同样的代码给了我一个准确的答案。然而,在2.7.10中,这发生在外壳中:
===================== RESTART: C:/Python27/Scripts/pi.py
=====================
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
4.0
>>>
有人能给我解释一下为什么会发生这种情况,以及我如何纠正这种情况吗?我尝试过传统的方法,如转换为字符串、格式化、舍入等,但都不管用。这就像我的变量被保存为1和0,尽管它们的值不断变化。同样,同样的代码在Python3上运行良好。在python2上,整数之间的除法产生整数除法,最终答案被截断为整数
>>> 1 / 2
0
在python3上,情况并非如此,因为除非明确使用/
整数除法运算符,否则除法会自动产生浮点
结果
您至少需要一个float
类型的操作数:
>>> 1. / 2
0.5
请注意,python2上的
1.
是1.0
,整数之间的除法会导致整数除法,最终答案被截断为整数
>>> 1 / 2
0
在python3上,情况并非如此,因为除非明确使用/
整数除法运算符,否则除法会自动产生浮点
结果
您至少需要一个float
类型的操作数:
>>> 1. / 2
0.5
请注意,
1.
在Python2.7上是1.0
,x/y
是整数除法,但您可以使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu除法
使用Python3的实除法:
from __future__ import division
adds = 0
subtracts = 0
for x in range(0, 10):
adds += 1/(1 + 4*x)
subtracts += 1/(3 + 4*x)
print(adds) #DEBUGGING
print(subtracts) #DEBUGGING
pi = float(4*(adds + subtracts))
print(pi)
输出:
在Python2.7上,
x/y
是整数除法,但是您可以使用\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu除法
使用Python3的实除法:
from __future__ import division
adds = 0
subtracts = 0
for x in range(0, 10):
adds += 1/(1 + 4*x)
subtracts += 1/(3 + 4*x)
print(adds) #DEBUGGING
print(subtracts) #DEBUGGING
pi = float(4*(adds + subtracts))
print(pi)
输出:
Python2使用整数除法将数字输入为浮点数,它会起作用。这已经解决并解释过了。Python2使用整数除法将数字输入为浮点数,它会起作用。它已经解决并解释过了。这很有效。非常感谢。这很有效。非常感谢。小心更改语法的机制,你可能不希望在每个地方都出现这种行为。人们更熟悉
/
作为真正的划分,这是它在以后版本中被更改的原因之一,并且只要你知道如何使用它,更改它不会很糟糕。小心更改语法的机制,您可能不希望在每个地方都出现这种行为。人们更熟悉/
作为真正的部门,这是它在以后的版本中被更改的原因之一,并且只要您知道如何使用它,更改它不会有什么坏处。