2

下面是我的程序,用于查找作为系列给出的大约 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

number 足够近似,但现在四舍五入为 12 位。我启动了 python 控制台并自己找到了它:

>>> n
1.0023221086328755
>>> round(n, 12)
1.002322108633

为什么我的 round() 函数只能在 python 控制台提示符内工作?

4

1 回答 1

7

默认情况下,python 的 print 在打印时会将数字四舍五入为 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 的 % 格式强制任意数量的数字,如上所示。

于 2012-11-22T14:28:40.463 回答