在python中舍入科学记数法

时间:2015-12-02 00:30:04

标签: python

我在python中有一个类似2.32432432423e25的数字,它是计算的结果。

我想将其舍入到3个小数点以获得输出:

2.324e25

我试过用:

x = 2.32432432423e25 
number_rounded = round(x, 3)

但是当我打印number_rounded时,它会输出一个格式与x相同的数字。

如何将x的显示限制为仅仅4位有效数字?

3 个答案:

答案 0 :(得分:14)

您需要为此使用字符串格式:

'{:0.3e}'.format(2.32432432423e25)

原因是round用于指定位置之后的位数,当您的数字为 O (25)时,这并不相关。

答案 1 :(得分:3)

如果要使用Python 3.6中引入的Python f字符串语法,请在变量后指定格式,以:分隔,例如:

>>> res = 2.32432432423e25
>>> f'The result is {res:.3e}'
'The result is 2.324e+25'

答案 2 :(得分:0)

我一直在寻找答案,并且主要是找到字符串答案。尽管通常这是处理此问题的最佳方法(因为无论如何,浮点数总是四舍五入到其定义的精度),但在某些情况下,您希望将浮点数舍入到给定的十进制精度(加上任何加上的浮点不精确度),并且我找不到一个好的答案。这是我想出的,我相信它可以处理所有可能的情况:输入零,输入<1,输入> 1(用于正数和负数):

def precision_round(number, digits=3):
    power = "{:e}".format(number).split('e')[1]
    return round(number, -(int(power) - digits))