![](/img/trans.png)
[英]Is there any python keyword for replacing last decimal point from a number string
[英]Remove decimal point from any arbitrary decimal number
我正在編寫 Python3 代碼,這需要我簡單地刪除小數點。 我嘗試了我能想到的最簡單的事情
num = int(str(float(x)).replace('.', ''))
其中x
是使用x = a*x*(1-x)
生成的,其中a
和x
都是浮點數
但是當十進制數以科學計數法表示時,它會引發以下錯誤:
num = int(str(float(x)).replace('.', ''))
ValueError: invalid literal for int() with base 10: '4234481147613274e-05'
盡管它在沒有以科學計數法表示時有效。 讓我感興趣的是,當我在命令行中使用相同的數字時,它給了我正確的結果
>>> x = 4234481147613274e-05
>>> x
42344811476.13274
>>> num = int(str(float(x)).replace('.', ''))
>>> num
4234481147613274
我檢查了以下線程,但它對我沒有幫助( 將科學記數法轉換為小數)。 為什么會這樣?
編輯:老實說,我不能准確地寫出我正在編碼的內容,因為我不允許透露它。 但我還是會盡量說清楚:
x = 0.55
和a
是 3.85681 和 4 之間的數字,然后我循環x
的值,最后是轉換:
a = 3.85681 + ((big_integer)%14319)*1e-5
for i in range(500): x = a*x*(1-x)
num = int(str(float(x)).replace('.', ''))
我想要的是如果x = 0.470912345
,我想要num = 470912345
。 所以我認為這個問題可以理解為什么我不使用x*10000
或類似的東西,因為我不希望 0.452 變成 4520,而只是 452。
float 不能精確地表示十進制。
例如,下面的代碼不起作用,因為 x 是「4.234481147613274e-05」
(在我的環境中)
>>> x = 4234481147613274e-20
>>> x
4.234481147613274e-05
>>> num = int(str(float(x)).replace('.', ''))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '423448114761e-05'
# cast to string
>>> str(float(x))
'4.23448114761e-05'
如果您想更精確地使用小數,
你應該使用十進制模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.