[英]python decimal print all internal decimal places
我正在尋找一種打印python十進制的所有內部小數位的方法。 有誰知道如何實現關注。 示例代碼是用Python編寫的。
from decimal import *
bits = 32
precision = Decimal(1) / Decimal(2**bits)
val = decimal(1078947848)
如果我乘以val * precision,現在會發生什么?我得到以下結果
val * precision
Decimal('0.2512121219187974929809570312')
但是我知道最后一個數字2不是我數字的結尾,所以我可以按照以下步驟給我這個結果
"%.100f" % x
'0.2512121219187974929809570312500000000000000000000000000000000000000000000000000000000000000000000000'
但是,不需要所有尾隨零,%。100f的大小取決於給定的位。 這應該是簡單的數學運算,也許我應該給自己一個休息時間,但是如何從給定的位數32推導出內部小數位數。
從文檔中 :
十進制模塊具有用戶可更改的精度(默認為28位),可以與給定問題所需的精度一樣大
您的電話號碼長度為29位數字,因此對於默認精度而言,這個數字有點太多了。 嘗試增加它。 29適用於這種情況,但是如果您不知道以后需要多少個小數位,不妨選擇更大的數字。
from decimal import *
getcontext().prec = 100
bits = 32
precision = Decimal(1) / Decimal(2**bits)
val = Decimal(1078947848)
print val * precision
結果:
0.25121212191879749298095703125000
另外,您可以通過調用normalize
去除那些尾隨的零。
>>> print (val * precision).normalize()
0.25121212191879749298095703125
您可以使用字符串表示形式並消除結尾的0; 剩下的就是您可以計算的“內部小數位”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.