python - 极其简单的python十进制

标签 python decimal

嗨,我需要一些帮助。我想计算格式为 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/

相关文章:

haskell - 格式化 float ,去掉尾随零和小数点,在 haskell 中将大数切换为科学记数法

iphone - 将 double 限制为两位小数,不带尾随零

MySQL十进制(24,16)产生奇怪的结果

asp.net-mvc - DisplayFormat 未应用于十进制值

python - 在 python 中浏览字符串

python - 在 seaborn regplot 中显示回归方程

python - 以交替顺序在 python 中组合多个不同长度的列表

python - 使用 pandas 从 xml 获取数据

python - 计算两个文件的行差异的最有效方法是什么?

java - Java十进制转二进制方法