Python 获取多个数字

Python 获取多个数字,python,rounding,decimal,Python,Rounding,Decimal,我一直在用python寻找一种方法,在十进制数的逗号右边只取4位数字,但我找不到。在这篇文章上看了一眼,--> ,但是写在那里的函数 >>> n = 4 >>> p = math.pi >>> '{0:.{1}f}'.format(p, n) '3.1416' …对我来说似乎不起作用 我导入了模块“math”和“decimal”,但可能我缺少了一些要导入的其他模块,但我不知道要导入哪些模块 谢谢大家,如果这个

我一直在用python寻找一种方法,在十进制数的逗号右边只取4位数字,但我找不到。在这篇文章上看了一眼,--> ,但是写在那里的函数

    >>> n = 4
    >>> p = math.pi
    >>> '{0:.{1}f}'.format(p, n)
    '3.1416'
…对我来说似乎不起作用

我导入了模块“math”和“decimal”,但可能我缺少了一些要导入的其他模块,但我不知道要导入哪些模块

谢谢大家,如果这个问题已经发布了,我很抱歉

佩克斯


我知道它使用旧的语法,但我个人更喜欢它

如果您只需要浮点数的剩余部分,可以将其转换为字符串并在
上拆分。

>>> str(math.pi).split('.')[1][:4]
<<< '1415'
您拥有的很好(将5四舍五入为6)

如果您想要截断而不是舍入,您可以:

from math import pi as p
print p
print int(p*10**4)/10.0**4

p=str(p).split(".")
p[1]=p[1][:4]
print ".".join(p)
输出:

3.14159265359

3.1415


3.1415

在我的情况下似乎不起作用。
什么不起作用?你犯了什么错误?请提供更多详细信息。这可能是因为您使用的是Python 2,而不是Python 3。这是我将函数传递给数据时遇到的错误…:AttributeError:“str”对象没有属性“format”,我只是尝试对列表中的一些数字求和,我需要它们具有相同的小数数。这就是全部…;)@雅各布·鲍尔:我也喜欢它,但是在舍入精度方面与OP的方法有细微的区别(或者是一个错误?),例如,
“%.4f”%0.11115
将导致
0.1111
,然而,
“%.3f”%0.1115
->
0.112
。。。weirdI认为这只是浮点运算,我不确定。格式是否会有不同,但浮点运算仍然是不正确的。@Jakob Bower:嗯,我太天真了,以为str.format会有不同的表现:)顺便问一下,
“%.xf”%round(float,x)
对于这种“边缘”情况可以吗?谢谢大家,这个函数“%.3f”%math.pi完成了我的工作…!;)@barti_ddu我真的没有做太多的浮点运算,所以我不确定。嘿,这个解决方案也起到了作用!这是好的和简单的!谢谢,我不知道你是不是想要四舍五入。如果你愿意,请投赞成票。我想投赞成票,但我需要15%的声誉,上面写着……;)
>>> Decimal(math.pi).as_tuple()[1][1:5]
<<< (1, 4, 1, 5)
from math import pi as p
print p
print int(p*10**4)/10.0**4

p=str(p).split(".")
p[1]=p[1][:4]
print ".".join(p)