siunitx Gói LaTeX giải quyết điều này cho bạn bằng cách cho phép bạn sử dụng trực tiếp giá trị phẩy python mà không cần phải phân tích chuỗi kết quả và biến nó thành LaTeX hợp lệ.
>>> print "\\num{{{0:.2g}}}".format(1e9)
\num{1e+09}
Khi tài liệu LaTeX được biên dịch, các mã trên sẽ được biến thành
. Như andybuckley chỉ ra trong các ý kiến, dấu cộng có thể không được chấp nhận bởi siunitx (tôi đã không thử nghiệm nó), do đó, nó có thể là cần thiết để làm một kết quả .repace("+", "")
.
Nếu sử dụng siunitx
là bằng cách nào đó khỏi bàn, viết một chức năng tùy chỉnh như thế này:
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
Thử nghiệm:
>>> latex_float(1e9)
'1 \\times 10^{9}'
Nguồn
2012-11-21 09:57:06
Tôi không nghĩ '1^{+ 09}' là kết quả đầu ra bạn muốn, nhưng dù sao đi nữa. – walkytalky
Đúng, tất nhiên tôi có nghĩa là 10^{+ 09} – pafcu