四舍五入大指数数,例如(6.624147...e+25 到 6.62e+25)
Rounding large exponential numbers e.g. (6.624147...e+25 to 6.62e+25)
我有一个需要四舍五入的非常大的数字列表。
例如:
6.624147027484989e+25
我需要四舍五入到 6.62e25
.
但是,np.around
、math.ceiling
、round()
等都不起作用。我在想,因为不是将 6.624147027484989e+25
舍入到 6.62e25
,它只是使它成为一个整数,而我实际上需要使整个数字小得多......如果这有意义的话。
我想,如果我正确理解你的问题,你可以使用 float("%.2e" % x)
这只是将值转换为文本,采用指数格式,有两个小数位(因此 'pi' 将变为 "3.14e+00"
),然后将其转换回浮点数。它适用于您的示例,以及像 5.42242344e-30
这样的小数字
对于 python 3.6+,最好使用 float(f"{x:.2e}")
- 谢谢@gabriel-jablonski
- 你可以使用python字符串格式来四舍五入。
i = 6.624147027484989e+25
new_i = float('{:0.2e}'.format(i))
print(new_i)
输出:
6.62e+25
更多字符串格式参考:https://docs.python.org/3.4/library/string.html#string-formatting
如果您想更改数字但保留类型(目前所有其他答案都将其转换为字符串)或一个 numpy 类型数组,您可以执行类似的操作,
$ ipython
Python 3.6.8 (default, Oct 7 2019, 12:59:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numpy as np
In [2]: num = 6.624147027484989e+25
In [3]: np.around(num, decimals=-24)
Out[3]: 6.6e+25
In [4]: np.around(num, decimals=-23)
Out[4]: 6.619999999999999e+25
虽然现在你不得不担心数值精度。
我有一个需要四舍五入的非常大的数字列表。 例如:
6.624147027484989e+25
我需要四舍五入到 6.62e25
.
但是,np.around
、math.ceiling
、round()
等都不起作用。我在想,因为不是将 6.624147027484989e+25
舍入到 6.62e25
,它只是使它成为一个整数,而我实际上需要使整个数字小得多......如果这有意义的话。
我想,如果我正确理解你的问题,你可以使用 float("%.2e" % x)
这只是将值转换为文本,采用指数格式,有两个小数位(因此 'pi' 将变为 "3.14e+00"
),然后将其转换回浮点数。它适用于您的示例,以及像 5.42242344e-30
对于 python 3.6+,最好使用 float(f"{x:.2e}")
- 谢谢@gabriel-jablonski
- 你可以使用python字符串格式来四舍五入。
i = 6.624147027484989e+25
new_i = float('{:0.2e}'.format(i))
print(new_i)
输出:
6.62e+25
更多字符串格式参考:https://docs.python.org/3.4/library/string.html#string-formatting
如果您想更改数字但保留类型(目前所有其他答案都将其转换为字符串)或一个 numpy 类型数组,您可以执行类似的操作,
$ ipython
Python 3.6.8 (default, Oct 7 2019, 12:59:55)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numpy as np
In [2]: num = 6.624147027484989e+25
In [3]: np.around(num, decimals=-24)
Out[3]: 6.6e+25
In [4]: np.around(num, decimals=-23)
Out[4]: 6.619999999999999e+25
虽然现在你不得不担心数值精度。