截断美元符号中的数字

截断美元符号中的数字

有没有办法截断美元符号内的数字?我找到了一个使用siunitx和 的解决方案\num{somenumber},但我有一个非常大的带有美元符号的输出。更糟糕的是,一些数字的格式如下:$\phantom{000}0.024$所以我甚至不能用 \num 替换美元符号(我认为 phantom 不能很好地与 \num 配合使用)。那么有没有解决办法,比如截断美元符号内显示的数字,保留小数点后 2 位?例如:2.5678 -> 2.56

答案1

只要\phantoms 位于小数点左边......

\documentclass{article}
\newenvironment{specialmath}{\catcode`$=\active}{}
{\catcode`$=\active
\gdef$#1${\dollar#1.000\enddollar}
\gdef\dollar#1.#2#3#4\enddollar{\ensuremath{#1.\ifx.#200\else#2\ifx.#30\else#3\fi\fi}}
}
\begin{document}
\begin{specialmath}
$2$\par
$2.$\par
$2.3$\par
$2.35$\par
$2.357$\par
$2.3578$\par
$52.3578$\par
$\phantom{000}52.3578$
\end{specialmath}

The dollar is restored $x^2$
\end{document}

在此处输入图片描述

应 OP 的要求,这里有一个版本,如果最初呈现的数字中没有小数,则不会添加小数:

\documentclass{article}
\newenvironment{specialmath}{\catcode`$=\active}{}
{\catcode`$=\active
\gdef$#1${\dollar#1.\relax\relax\enddollar}
\gdef\dollar#1.#2#3#4\enddollar{\ensuremath{%
  #1\ifx\relax#2\else%
    \ifx.#2.00\else.#2\ifx.#30\else#3\fi\fi%
  \fi%
}}
}
\begin{document}
\begin{specialmath}
$2$\par
$2.$\par
$2.3$\par
$2.35$\par
$2.357$\par
$2.3578$\par
$52.3578$\par
$\phantom{000}52.3578$
\end{specialmath}

The dollar is restored $x^2$
\end{document}

在此处输入图片描述

相关内容