Python:如何在浮点转字符串时抑制科学计数法(如9e-10)?

1 投票
2 回答
5591 浏览
提问于 2025-04-16 13:34

我想用Python写代码,给另一种语言使用,但那种语言不理解科学计数法的浮点数(比如9e-9)。有没有简单的方法让Python在把浮点数转换成字符串时,使用长格式的表示法(也就是用0.000000009代替9e-9)?我试过用'%(foo)f',但是这样会把小数点后的数字截断(变成0.00000)。

2 个回答

0

使用特定的格式说明符,比如:

>>> f=9*(10**-9)
>>> str(f)
'9e-09'
>>> "%.23f" % f
'0.00000000900000000000000'

更新(感谢@Sven):你想用多少位数字,取决于数字的大小。如果你有很大的数字(比如几万亿),显然就不需要小数部分。对于很小的数字,你需要更多位数。确实,这样的表示方式看起来不太好。

2

你可以试试这样的写法:

"%.16f" % f

如果数字太小,这种写法还是会用科学计数法来表示,所以你需要单独处理这种情况,比如:

"%.16f" % f if f >= 1e-16 else "0.0"

撰写回答