将科学记数法转换为十进制,不带尾随零

时间:2018-03-12 09:48:36

标签: python format decimal scientific-notation

我想打印浮标

  • 以十进制表示法
  • 没有尾随零

例如:

1e-5    -> 0.00001
1.23e-4 -> 0.000123
1e-8    -> 0.00000001

一些不起作用的事情:

str(x)输出小浮点数的科学记数法

format(x, 'f')"{:f}".format(x)具有固定的小数位数,因此会留下尾随零

('%f' % x).rstrip('0').rstrip('.')轮次1e-80

from decimal import Decimal
(Decimal('0.00000001000').normalize())

使用科学记数法

%0.10f要求我提前知道我的花车的精确度

2 个答案:

答案 0 :(得分:1)

如果您的数字始终如此,您只需修改字符串:

number = "1.23155e-8" # as a string
lead, power = number.split("e-")
a, b = lead.split(".")
number = "0." + "0"*(int(power)-1) + a + b

print(number)

编辑:修复它。

答案 1 :(得分:1)

基于eugenhu的评论,具有15位精度的rstrip('0')似乎适用于所有示例。

("%0.15f" % 1.e-5).rstrip('0')
Out[17]: '0.00001'

("%0.15f" % 1.e-8).rstrip('0')
Out[18]: '0.00000001'

("%0.15f" % 1.23e-4).rstrip('0')
Out[19]: '0.000123'