在 Python 中使用格式字符串,我可以轻松地以“科学记数法”打印一个数字,例如
>> print '%g'%1e9
1e+09
将数字格式化为 LaTeX 格式的最简单方法是什么,即 1\times10^{+09}?
最佳答案
siunitx LaTeX 包为您解决了这个问题,允许您直接使用 python 浮点值,而无需解析结果字符串并将其转换为有效的 LaTeX。
>>> print "\\num{{{0:.2g}}}".format(1e9)
\num{1e+09}
LaTeX文档编译后,上面的代码会变成
.正如 andybuckley 在评论中指出的那样,加号可能不被 siunitx 接受(我没有测试过),所以可能需要执行 .repace("+", "")
关于结果。
如果使用 siunitx
以某种方式无法解决,请编写如下自定义函数:
def latex_float(f):
float_str = "{0:.2g}".format(f)
if "e" in float_str:
base, exponent = float_str.split("e")
return r"{0} \times 10^{{{1}}}".format(base, int(exponent))
else:
return float_str
测试:
>>> latex_float(1e9)
'1 \\times 10^{9}'
https://stackoverflow.com/questions/13490292/
相关文章:
java - 使用Apache POI在Excel中使用千位分隔符格式化数字
excel - 使用VBA将单元格值从一个单元格复制到另一个单元格
java - java中的数字格式使用Lakh格式而不是百万格式
python - 在一行中使用一个表达式两次 - 作为字符串格式的条件和?
floating-point - 如何用前导零填充 Fortran 浮点输出?
reporting-services - 如何使rdl文件中的特定文本仅加粗
javascript - jQuery 如何继续 Javascript 到新行?