这是我以前的线。
我想对带小数分隔符的数字进行相同的计算。对 2 个、3 个或更多数字求和。
这是我当前的代码。我想让 57208 - 57,208;6207 - 6,207 以及更多。
\documentclass{article}
\newcommand{\showsum}[2][c]{%
$\edef\originalplusmathcode{\the\mathcode`+}%
\begingroup\lccode`~=`+ \lowercase{\endgroup\def~}{\\&}%
\mathcode`+ "8000
\begin{array}[#1]{@{}r@{\;}r@{}}
\mathchar\originalplusmathcode& #2 \\
\hline
& \the\numexpr#2\relax
\end{array}%
$%
}
\begin{document}
X\quad % to show the baseline
\showsum[b]{57208+6207+12095}\quad
X
\end{document}
我需要的。同样只有 2 个数字。\showsum[b]{57,208+6,207+12,095}\quad
编辑:我的问题表述错误。我想像这样求和:6.7+13.12+2.501=22.321(用逗号,而不是用点来表示)。然后以相同的方式将其输入函数中。
答案1
以下是编写总和的具体方法以及用途siunitx
打印\num
带有千位分隔符的数字:
\documentclass{article}
\usepackage{siunitx,xfp}
\newcommand{\addsum}[1]{\edef\sumtotal{\inteval{\sumtotal+#1}}}
\newcommand{\stacksum}[1]{\edef\stackedsum{\stackedsum \tnc \tcf{#1} \tnl}}
\NewDocumentCommand{\showsum}{ O{c} >{ \SplitList { + } } m }{%
$\def\stackedsum{}
\let\tnl\relax\let\tnc\relax\let\tcf\relax
\ProcessList{#2}{\stacksum}
\def\tnl{\\}\let\tnc&\def\tcf{\num}
\sisetup{
group-separator={,},
group-minimum-digits=4}
\begin{array}[#1]{@{} r @{} r @{}}
+\;{}\stackedsum
\hline
& \def\sumtotal{0}%
\ProcessList{#2}{\addsum}\num{\sumtotal}
\end{array}$%
}
\begin{document}
X\quad % to show the baseline
\showsum[b]{57208+6207+12095}\quad
X
\end{document}