我正在寻找一种打印python十进制的所有内部小数位的方法。有谁知道如何实现以下。示例代码是用Python编写的。
from decimal import *
bits = 32
precision = Decimal(1) / Decimal(2**bits)
val = decimal(1078947848)
现在发生了什么,如果我乘以val *精度我得到以下结果
val * precision
Decimal('0.2512121219187974929809570312')
但是我知道最后一个数字2不是我的号码的结尾,所以我可以做以下给我这个结果
"%.100f" % x
'0.2512121219187974929809570312500000000000000000000000000000000000000000000000000000000000000000000000'
但是不需要所有尾随零,%。100f的大小取决于给定的位。它应该是简单的数学运算,也许我应该给自己一个休息时间,但是如何从给定的位数32中得出内部小数位数。
答案 0 :(得分:2)
十进制模块具有用户可更改的精度(默认为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
答案 1 :(得分:0)
你可以把你的字符串表示和&消除尾随0;剩下的是你的“内部小数位”,你可以计算。