在python中舍入小数字

use*_*276 0 python formatting

我有一个数字表,如5E-7,10E-4,但数字是精确到几个小数点,如5.646273838E-7.我知道我可以在python中使用round函数来设置精度,但由于我的所有数字都有所不同,我希望能够围绕每一个说2 dp,但仍然保持答案中的指数.所以我希望5.646273838E-7成为5.64E-7和2.38212538E-4成为2.38E-4.我试图使用一种方法,我可以将我的数字转换为字符串然后计算字符串长度,所以对于5.646273838E-7,如果字符串长度是~17,我将舍入设置为(17-2)*0.5并且它有点像我的数据范围.但是,有人可以提出更好的方法吗?

@ user545424:嘿,这是一个非常有用的事情要知道并完成这项工作,除了我的数据是从一个包含字符串和数字的文本文件中读取的.字符串是对象的名称,例如:名称Prop_1 Prop_2
object_1 5.343e-10 2.574e-10

然后我使用以下代码读取并将其显示为表并保存为乳胶文件numpy.set_printoptions(precision = 2)

    out=numpy.loadtxt('data.txt', dtype=str,usecols=(0,1,2,3))


    col=zip(*out)
    tab=Table(col)
    tab.write('table',format='latex')
    print(tab)
Run Code Online (Sandbox Code Playgroud)

谢谢

use*_*ica 5

>>> format(0.1234, '.2e')
'1.23e-01'
Run Code Online (Sandbox Code Playgroud)

format函数与紧密相关的str.format方法是你想要的这里..2表示"小数点后2位数",e表示科学记数法.有很多选择; 有关详细信息,请参阅格式字符串语法规范.