下面是我的程序,用于查找以系列形式给出的某个5000度多项式的近似根:
def s(r, z):
sm = 0
for k in range(1, z+1):
sm += (900-3*k) * r ** (k-1)
return sm
target = -600000000000
n = 1
dr = .125
curr = 0
while abs(curr - target) > 1:
curr = s(n, 5000)
if curr > target : n+= dr
else : n-=dr
dr /= 2
我希望它四舍五入到小数点后面的12位数,因此
print round(n, 12)
给了我:
1.00232210863
数字足够近似,但现在四舍五入为12位数。我启动了python控制台并自己找到了它:
>>> n
1.0023221086328755
>>> round(n, 12)
1.002322108633
为什么我的round()函数只能在python控制台提示符下工作?
答案 0 :(得分:7)
通过deafault python打印时打印数字为11位数。 尝试改为
print '%0.12f'%n
要更清楚一点,当您在交互式控制台中时,请执行以下操作:
>>> x = 1.123456789012345
>>> x
1.123456789012345
>>> print x
1.12345678901
请记住,第一个电话实际上是对
的调用x.__repr__()
将尽可能多地打印关于x的信息,而print语句则转换为
print x.__str__()
如果需要,并且在int上构建 str ()方法会转到11位数。您可以使用python的%格式强制使用任意数量的数字,如上所示。