siunitx 中不确定量的加法/乘法

siunitx 中不确定量的加法/乘法

与有关这个问题,我想对具有不确定性的 siunitx 数字执行算术运算。例如,使用将两个数字相乘\mult{0.2(1)e2}{2(1)e2}应该给出0.4(3)e4计算求积误差。忽略不确定性并给出0.4e4也是可以的。问题是输入数字包含不确定性,因为它们是在使用括号形式的误差的一系列宏中给出的,并且模块无法正确处理它们expl3

编辑:这是一个 MWE,尽管它目前不起作用。如果2为函数提供了舍入参数,它应该给出5.45

\documentclass{article}

\usepackage{siunitx}
\usepackage{expl3}

\newcommand{\a}{6.0(1)e2}
\newcommand{\b}{1.1(1)e2}

\ExplSyntaxOn
\NewDocumentCommand \Func {m m m}
{
  \fp_eval:n { round( #1/#2, #3 ) }
}
\ExplSyntaxOff

\begin{document}

\Func{\a}{\b}{2}

\end{document}

答案1

下面的代码至少会实现你的一个目标:计算结果并忽略不确定性(示例将输出5.45)。

如果您想计算不确定性,请查看\regex_extract_...其中interface3.pdf允许您从下面的正则表达式中进行匹配,然后使用给定的数字来根据需要计算错误。

\documentclass{article}

\usepackage{siunitx}
\usepackage{expl3}

\newcommand{\one}{6.0(1)e2}
\newcommand{\two}{1.1(1)e2}

\ExplSyntaxOn
\NewDocumentCommand \Func {m m m}
{
    \tl_set:Nx \l_tmpa_tl { #1 }
    \regex_replace_once:nnN { \(\d\) } { } \l_tmpa_tl
    \tl_set:Nx \l_tmpb_tl { #2 }
    \regex_replace_once:nnN { \(\d\) } { } \l_tmpb_tl
    \fp_eval:n { round( \l_tmpa_tl / \l_tmpb_tl, #3 ) }
}
\ExplSyntaxOff

\begin{document}

\Func{\one}{\two}{2}

\end{document}

相关内容