python round()函数不工作?

时间:2012-11-22 14:24:13

标签: python

下面是我的程序,用于查找以系列形式给出的某个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控制台提示符下工作?

1 个答案:

答案 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的%格式强制使用任意数量的数字,如上所示。