3 回答

TA貢獻1725條經(jīng)驗 獲得超8個贊
您可以使用負數(shù)來舍入整數(shù):
>>> round(1234, -3)
1000.0
因此,如果您只需要最重要的數(shù)字:
>>> 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,你可能需要注意將float轉(zhuǎn)換為整數(shù)。

TA貢獻1835條經(jīng)驗 獲得超7個贊
字符串格式化中的%g將浮動格式化為一些有效數(shù)字。它有時會使用'e'科學記數(shù)法,因此將圓形字符串轉(zhuǎn)換回浮點數(shù)然后通過%s字符串格式轉(zhuǎn)換。
>>> '%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'

TA貢獻1827條經(jīng)驗 獲得超8個贊
如果你想得到除1個有效小數(shù)以外的其他小數(shù)(否則與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
添加回答
舉報