嗨,我需要一些帮助。我想计算格式为 xxxxx.yyyyyyyyyyyyyyy 的 float 。我知道我应该使用 Decimal 而不是 float 我尝试了很多,也搜索了很多,但仍然遇到以下简单问题:
getcontext().prec = 14
a = Decimal(str('12.737791301'))
b = Decimal(str('12.737791839'))
c = Decimal((b - a)) # substract is what I finally want here
print a, b, c
12.737791301 12.737791839 5.38E-7
我希望 c 显示为 0.000000538
感谢您的帮助!
ps。 Normalize() 不起作用
最佳答案
真正的解决方案是 format(),在 python 2.6 和 3.1 中可用。
format(c,"f")
会将小数转换为浮点 repr 样式输出。这是 python 中新样式格式化的一部分。
其他更糟糕的解决方案想法如下:
这可以通过格式字符串来完成,就像您的 Decimal 值是 float 一样。
print "%0.9f"% c
将生成 '0.000000538'
python library reference可以告诉你更多。
为了解决需要知道正确的小数位数的问题,您始终可以在浮点精度的限制下打印出来,并带有一个条件,以防小数较小:
out = "%.16f" % c if c >= 1e-16 else "0.0"
print out.rstrip('0')
第二行处理尾随 0。
关于python - 极其简单的python十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563620/