3 回答
TA貢獻1725條經驗 獲得超8個贊
您可以使用負數來舍入整數:
>>> 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,你可能需要注意將float轉換為整數。
TA貢獻1835條經驗 獲得超7個贊
字符串格式化中的%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'
TA貢獻1827條經驗 獲得超8個贊
如果你想得到除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
添加回答
舉報
