我的目标只是在不增加额外精度的情况下将诸如“1.2”之类的字符串转换为科学记数法。问题是我总是在输出结束时得到多余的 0。
>>> input = "1.2"
>>> print '{:e}'.format(float(input))
1.200000e+00
我试图弄清楚如何获得公正1.2e+00
。我意识到我可以在我的格式语句中指定精度,但我不想不必要地截断更长的字符串。我只是想压制训练0。
我试过使用 Decimal.normalize(),它适用于所有情况,除了 e < 2。
>>> print Decimal("1.2000e+4").normalize()
1.2E+4
>>> print Decimal("1.2000e+1").normalize()
12
所以这样更好,除了我不想要 12,我想要 1.2e+1。:P
任何建议将不胜感激!
编辑: 为了澄清,输入值已经被适当地四舍五入到现在未知的预定长度。我试图避免重新计算适当的格式精度。
基本上,我可以输入“1.23”和“1234.56”的值,结果应该是“1.23e+0”和“1.23456e+3”。
我可能只需要检查输入字符串的长度并使用它来手动指定精度,但我想检查并确保我没有遗漏一些可能会阻止指数格式任意添加 0 的内容。