将科学计数法转换为不带尾随零的十进制
Convert scientific notation to decimal with no trailing zeros
我想打印出花车
- 十进制
- 没有尾随零
例如:
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-8
到 0
from decimal import Decimal
(Decimal('0.00000001000').normalize())
使用科学记数法
%0.10f
要求我提前知道浮点数的精度
如果你的数字总是这样,你可以修改字符串:
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)
编辑:修复了它。
根据 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'
我想打印出花车
- 十进制
- 没有尾随零
例如:
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-8
到 0
from decimal import Decimal
(Decimal('0.00000001000').normalize())
使用科学记数法
%0.10f
要求我提前知道浮点数的精度
如果你的数字总是这样,你可以修改字符串:
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)
编辑:修复了它。
根据 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'