對於我正在進行的編碼練習,我試圖比較兩個數字並選擇具有較大數字有效數字的數字。比較兩個數字中的有效數字的數量
例如:比較2.37e+07
和2.38279e+07
,請選擇2.38279e+07
,因爲它具有更多有效數字。
我不知道如何在Python中實現它。我考慮使用len(str(NUMBER))
來計算每個數字的長度,但是這種方法對於上述兩個數字都返回「10」,因爲它不區分零和非零數字。
如何比較Python中有效數字的數量?
對於我正在進行的編碼練習,我試圖比較兩個數字並選擇具有較大數字有效數字的數字。比較兩個數字中的有效數字的數量
例如:比較2.37e+07
和2.38279e+07
,請選擇2.38279e+07
,因爲它具有更多有效數字。
我不知道如何在Python中實現它。我考慮使用len(str(NUMBER))
來計算每個數字的長度,但是這種方法對於上述兩個數字都返回「10」,因爲它不區分零和非零數字。
如何比較Python中有效數字的數量?
一個快速和骯髒的方法可能是len(str(NUMBER).strip('0'))
這將削減任何尾隨零和計數剩餘的數字。
要打折的小數點,然後你需要len(str(NUMBER).replace('.','').strip('0'))
但是你需要記住,在許多情況下,蟒蛇浮點數轉換成字符串可以給你一些奇怪的行爲,由於道路浮點數字被處理。
如果你打算去與文本上這樣做,你可以執行以下操作使用正則表達式:
import re
l = re.compile(r'(\d*?)(0*)(\.0?)')
>>> l.match(str(2.37e+07)).groups()[0]
'237'
可以試試這樣的算法:
sf1 = "2.3723805"
addsf1 = 0
decimal = False
for num in sf1:
if decimal == True:
addsf1 = addsf1 + int(num)
if num == ".":
decimal = True
print(addsf1)
這將檢查如果你把它轉換成一個字符串,那麼這個數字中的每一個字母都是這樣。然後它會遍歷每一個字母,直到達到小數部分,然後它會將這些數字加在一起。您可以對另一個可用於比較兩者之間差異的有效數字執行此操作。這會告訴哪個人有更大的數字。
不知道這是否是針對您的問題的最佳解決方案。
你是從'float'對象還是'str'對象開始的? –
如果他們是'浮動',那麼你需要看看輸入數字的精度,而不是計算的數字,因爲他們可以有'人工數字的有效數字'?實際上,輸出結果的準確性直接關係到輸入精度的準確性。 –