我如何格式化数字,就像 pgfplots 中的标题所示的那样?
答案1
欢迎使用 TeX-SE!很可能有人已经在某个地方完成了,但我找不到。我从pgfplots
库中复制了单元units
并将它们作为宏的一部分。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\newcommand{\FormatNumber}[1]{\pgfmathfloatparsenumber{#1}%
\pgfmathfloattomacro{\pgfmathresult}{\tmp}{\Mantissa}{\Exponent}%
\pgfmathtruncatemacro{\itest}{ifthenelse(\Exponent<3 && \Exponent>-3,1,0)}%
\pgfkeys{/pgf/number format/.cd,fixed,precision=1,zerofill}%
\pgfmathprintnumber{\Mantissa}\,%
\ifnum\itest=1%
\pgfmathtruncatemacro{\myexp}{\Exponent-2}%
\text{\ifcase\myexp\relax%
c%
\or%1
d%
\or%-1
da%
\or%-2
h%
\fi}%
\else%
\pgfmathtruncatemacro{\myexp}{int(9+\Exponent/3)}%
\text{\ifcase\myexp%
\or%24
y%
\or%21
z%
\or%18
a%
\or%15
f%
\or%12
p%
\or%9
n%
\or%6
$\mu$%
\or%3
m%
\or%0
%
\or%-3
k%
\or%-6
M%
\or%-9
G%
\or%-12
T%
\or%-15
P%
\or%-18
E%
\or%-21
Z%
\or%-24
Y%
\fi}%
\fi}
\begin{document}
\verb|\FormatNumber{1234}| \FormatNumber{1234}\par
\verb|\FormatNumber{1999}| \FormatNumber{1999}\par
\verb|\FormatNumber{1234567}| \FormatNumber{1234567}\par
\verb|\FormatNumber{123}| \FormatNumber{123}\par
\end{document}
如果需要的话,可以将其结合起来siunitx
。