在Python中如何将数字舍入为有效数字

2024-04-20 05:46:37 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

可以使用负数对整数进行舍入:

>>> round(1234, -3)
1000.0

因此,如果您只需要最重要的数字:

>>> from math import log10, floor
>>> def round_to_1(x):
...   return round(x, -int(floor(log10(abs(x)))))
... 
>>> round_to_1(0.0232)
0.02
>>> round_to_1(1234243)
1000000.0
>>> round_to_1(13)
10.0
>>> round_to_1(4)
4.0
>>> round_to_1(19)
20.0

如果浮点数大于1,则可能需要将其转换为整数。

如果要使用除1个有效小数以外的其他小数(否则与Evgeny相同):

>>> from math import log10, floor
>>> def round_sig(x, sig=2):
...   return round(x, sig-int(floor(log10(abs(x))))-1)
... 
>>> round_sig(0.0232)
0.023
>>> round_sig(0.0232, 1)
0.02
>>> round_sig(1234243, 3)
1230000.0

字符串格式中的%g将格式化一个四舍五入到一些有效数字的浮点。它有时会使用“e”科学符号,因此将舍入的字符串转换回浮点,然后通过%s字符串格式。

>>> '%s' % float('%.1g' % 1234)
'1000'
>>> '%s' % float('%.1g' % 0.12)
'0.1'
>>> '%s' % float('%.1g' % 0.012)
'0.01'
>>> '%s' % float('%.1g' % 0.062)
'0.06'
>>> '%s' % float('%.1g' % 6253)
'6000.0'
>>> '%s' % float('%.1g' % 1999)
'2000.0'

相关问题 更多 >