将数字格式化为科学计数法,但使用 3e-5 而不是 3e-05

Posted

技术标签:

【中文标题】将数字格式化为科学计数法,但使用 3e-5 而不是 3e-05【英文标题】:Format number to scientific notation, but to 3e-5 instead of 3e-05 【发布时间】:2020-04-30 09:53:37 【问题描述】:

我想用科学计数法打印非常小或非常大的数字:

pattern = ":.0e"
value1 = pattern.format(0.00003)
value2 = pattern.format(0.00000000005)
value3 = pattern.format(999999999) 
print(value1, value2, value3)
# Current output: 3e-05 5e-11 1e+09
# Desired output: 3e-5 5e-11 1e+9

- 之后没有0,有没有比value1.replace("-0", "-").replace("+0", "+") 更好的方法来格式化数字?我希望数字尽可能短。

【问题讨论】:

这能回答你的问题吗? remove leading 0 in exponential format in python 【参考方案1】:

使用小数。

import decimal
pattern = ":.0e"
value1 = pattern.format(decimal.Decimal('0.00003'))
value2 = pattern.format(decimal.Decimal('0.00000000005'))
value3 = pattern.format(decimal.Decimal('999999999'))
print(value1, value2, value3)

【讨论】:

以上是关于将数字格式化为科学计数法,但使用 3e-5 而不是 3e-05的主要内容,如果未能解决你的问题,请参考以下文章

将 C# Double 格式化为以三的倍数为单位的科学记数法

将小数格式化为没有科学记数法的小数位数

在 R 中,使用科学记数法 10^ 而不是 e+

C#格式双重限制有效数字但限制科学记数法

excel 怎么让数字不用科学计数法

将 y 轴标签格式化为具有许多零的更高千位科学记数法?