pgfplots - 数字格式,1234 到 1.2K,1999 到 2.0K(四舍五入),1234567 到 1.2M 等

pgfplots - 数字格式,1234 到 1.2K,1999 到 2.0K(四舍五入),1234567 到 1.2M 等

我如何格式化数字,就像 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

相关内容