0%

python | 小数的表现形式

python 中如果小数非常多的话,会导致使用科学技术法。

但是,在某些场景中,使用科学技术法会出现一些错误,这里为不使用科学技术法,输出小数。


参考资料


先说一下局限性。

  • 如果遇到小数点尾数很多,本文介绍的方法有可能会精度错误
  • 尝试使用了 Decimal ,可能是自身原因,并没有有效解决问题,后续可能会继续使用这个进行修正
    • 另外,使用 Decimal 会降低速度

如果指数大于 15 或小于 -4,则用科学计数法表示 floatrepr

>>> n = 0.000000054321654321
>>> n
5.4321654321e-08  # scientific notation

如果使用 str,则生成的字符串再次采用科学计数法:

>>> str(n)
'5.4321654321e-08'

我最终使用下面的方法,来保持非科学计数法输出小数

price = '{:.15f}'.format(price)
要是想要去除后面的 0 可以
print('{:.15f}'.format(0.000000919).rstrip('0'))

但是,使用上面的方法,对某些数依然会有精度不准确的情况。

请我喝杯咖啡吧~