簡體   English   中英

Python十進制打印所有內部小數位

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM