Python:如何在浮点转字符串时抑制科学计数法(如9e-10)?
我想用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"