python - 如何打印 float 而不在 python 中进行任何截断?

标签 python

我有一些数字 0.0000002345E^-60。我想按原样打印浮点值。 有什么方法可以做到? print %f 将其截断为 6 位数字。 %n.nf 也给出固定数字。打印不截断的方法是什么。

最佳答案

像这样?

>>> print('{:.100f}'.format(0.0000002345E-60))
0.0000000000000000000000000000000000000000000000000000000000000000002344999999999999860343602938602754

正如您可能从输出中注意到的那样,您并不清楚要如何操作。由于 float 表示,你失去了精度并且不能真正准确地表示数字。因此,您希望数字停止显示的位置并不是很清楚。

另请注意,指数表示通常用于更明确地显示 significant digits 的数量。数有。

您还可以使用 decimal 来避免因二进制 float 截断而丢失精度:

>>> from decimal import Decimal
>>> d = Decimal('0.0000002345E-60')
>>> p = abs(d.as_tuple().exponent)
>>> print(('{:.%df}' % p).format(d))
0.0000000000000000000000000000000000000000000000000000000000000000002345

关于python - 如何打印 float 而不在 python 中进行任何截断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048987/

相关文章:

python - 如何在 .NET-Core 应用程序中使用 Python?

Python初始化

python - Flask 中的猜数字游戏

python - 如何从Python中的数据库中获取结果之一

python - 使用 Pandas 加入 2 CSV

python - 如何反转 Python statsmodels ARIMA 预测中的差异?

python - 在Python中初始化两个变量以指向相同的引用

python 类的自定义异常处理程序

python - 如何将数组的前 N ​​个元素设置为零?

python - 将 pytest 与 src 层一起使用