如何在Python中将指数值转换为字符串格式?

5
我正在计算一些十分小的小数,例如0.0000082。但是当我将其保存在变量中时,它会变成科学计数法。最后我需要得到一个字符串结果,但使用str()转换会保留e。我需要字符串结果精确到小数点后8位。有没有方法在保持8位精度的同时实现这个目标呢?
另一个例子:5.8e-06 应该被转换为 '0.00000580'。末尾的零并不重要。我需要将字符串用于其他地方,因此不能在print()函数中完成。
5个回答

9

指数符号不是数字的固有属性(它以���进制浮点值存储)。这只是在使用str将数字转换为字符串时的默认表示。如果您使用format函数将数字转换为字符串,则可以指定自己的格式选项。尝试像这样:

format(5.8e-06, '.8f')

在格式说明符中,8 表示使用八位精度,而 f 则要求将其写成纯小数形式,不使用指数符号。您可以在文档中了解更多有关格式说明符的信息。

谢谢您的解释。这让我更加了解了。我会接受这个答案。 - aste123

5

另一个想法:

'{0:.7f}'.format(0.0000082)

3
你可以尝试以下操作:

你可以尝试一下:

import decimal

print(str(decimal.Decimal(5.8e-06))[:10])

>>> 0.00000580

正是我所需要的。非常感谢你。 - aste123
我只是在寻找更好的切片方法...等一下。 - PRMoureu
是的,这种方法不会保留整数部分。 - aste123

3
print ("{:.6f}".format(1e-4))

将会输出

0.000100

2
您可以使用print:
>>> number = 1e-08
>>> number
1e-08
>>>print("{:.12f}".format(float(number)))
0.000000010000

或者您可以将数字转换为字符串并存储:
>>> str1 = "{:.12f}".format(float(number))
>>> str1
'0.000000010000'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接