我在一个文件中有数字(因此,作为字符串)以科学计数法表示,例如:
8.99284722486562e-02
但我想将它们转换为:
0.08992847
是否有任何内置功能或任何其他方式来做到这一点?
原文由 mdpoleto 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答9.6k 阅读✓ 已解决
2 回答5.2k 阅读✓ 已解决
2 回答3.6k 阅读✓ 已解决
3 回答4.5k 阅读
2 回答2.5k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
我正在做这个答案,因为投票最高的人有错误信息,所以我可以解释我的改进。
长话短说 : 使用
("%.17f" % n).rstrip('0').rstrip('.')
默认情况下,如果开头有 5 个或更多个零,则 Python 将格式设置为科学记数法。
0.00001
/1e-05
格式为"1e-05"
。0.0001
/1e-04
格式为"0.0001"
。所以当然
8.99284722486562e-02
"0.0899284722486562"
。一个更好的例子是
8.99284722486562e-05
。 (0.00008992847224866
)我们可以使用 --- 轻松格式化为原始小数位
"%.6f"
默认情况下与"%f"
相同。"%f" % 8.99284722486562e-05
产生'0.000090'
。"%f" % 0.01
产生'0.010000'
。默认情况下,浮点数最多显示 17 位小数。
0.1234567898765432123
-(19 dp 输入)0.12345678987654321
-(17 dp 输出)所以如果我们这样做了
"%.17f" % 8.99284722486562e-02
我们会得到'0.08992847224865620'
。 (注意多余的0)但是如果我们做了
"%.17f" % 0.0001
我们肯定不会想要'0.00010000000000000'
。所以要删除尾随零,我们可以这样做:
("%.17f" % n).rstrip('0').rstrip('.')
(请注意,我们还去掉了小数点,以防数字中没有小数)
还有
%f
的对应物:%f
显示标准符号%e
显示科学记数法%g
显示默认值(如果有 5 个或更多零则为科学)