极度简单的python decim

2024-09-27 17:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我需要帮助。我想用如下格式计算浮点数xxxxx.YYYYYYYYYYYYYY. 我知道我应该用十进制而不是浮点数 我试了很多次,搜索了很多,但我仍然有以下简单的问题:

    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()不起作用


Tags: hereis格式whatdecimalprintxxxxx浮点数
2条回答

真正的解决方案是format(),在Python2.6和3.1中可用。在

format(c,"f")将十进制转换为float repr样式的输出。这是python中新样式格式的一部分。在

其他更糟糕的解决方案如下:

这可以通过一个格式字符串来完成,就像您的十进制值是浮点值一样。 print "%0.9f" % c将生成“0.000000538”

python library reference可以告诉你更多。在

为了解决需要知道小数位数正确的问题,您可以在浮点精度的限制下打印出来,条件是小数点较小:

out = "%.16f" % c if c >= 1e-16 else "0.0"
print out.rstrip('0')

第二行处理后面的0

您可以使用quantize。一些类似于

c_dec = Decimal(c)
NUMPLACES = Decimal(10)**( c_dec.adjusted() -3)
c_str = str( c_dec.quantize(NUMPLACES) )
print c_str

编辑。在您的特定示例中,以下内容起作用:

^{pr2}$

如果您想要更健壮的东西,请查看这个例子http://docs.python.org/library/decimal.html#recipes

相关问题 更多 >

    热门问题