像纸一样用小数点分隔符对数字求和

像纸一样用小数点分隔符对数字求和

这是我以前的线

我想对带小数分隔符的数字进行相同的计算。对 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}

相关内容