![siunitx 中不确定量的加法/乘法](https://linux22.com/image/355484/siunitx%20%E4%B8%AD%E4%B8%8D%E7%A1%AE%E5%AE%9A%E9%87%8F%E7%9A%84%E5%8A%A0%E6%B3%95%2F%E4%B9%98%E6%B3%95.png)
与有关这个问题,我想对具有不确定性的 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}